解决方案 »

  1.   

    Substring(index,length)       index  表示开始截取位置;length表示截取长度;
    LastIndexOf(“\\”)  表示最后一个\\ 出现的位置也就是index,是int类型的。
      

  2.   

    Application.StartupPath是一个只读属性,是不可以设置的。
    Application.StarupPath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。既是Application.StartupPath  =你启动项目的BIN下边的目录且Application.StartupPath不是以\结束的。可以在后面加“\\”(转义字符)Application.StartupPath 值类似    C:\xxx\bin\DebugString.LastIndexOf 方法
    报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置。String.Substring(int index,string str)是截取字符串的一个方法 
    从str字符串中的第index个位置开始取新字符串
    string P_str_creportPath = Application.StartupPath.Substring(0, Application.StartupPath.Substring(0,
                     Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\"));这句话的意思就是找到你的WinForm应用程序的根目录路径,也就是到c:\xxx目录下
      

  3.   

     Application.StartupPath.Substring(0,
                     Application.StartupPath.LastIndexOf("\\")).LastIndexOf("\\") 这句代码是表示一个长度大小吗,为什么后面会有两个LastIndexOf("\\"),这是最困惑的地方,能不能将详细一点,谢谢
      

  4.   

    var startupDir = new DirectoryInfo(Application.StartupPath);
    var upper2Dir = startupDir.Parent.Parent;
    var P_str_creportPath = upper2Dir.FullName;
      

  5.   

    你看它写了两层嵌套的 Application.StartupPath.Substring(0, ......  语句。你需要把 ) 括号跟前边的 ( 括号匹配。这就是坑爹的写法。编程不是炫技,也不是永远纠结“性能问题”,而是首先要考虑“成文自明”。一个好的程序员,就算是这样写,也应该在变量命名上“成文自明”地将代码写成文档风格的形式。例如:var 启动目录 = Application.StartupPath;
    var 上一级目录结束位置 = Application.StartupPath.LastIndexOf("\\");
    var 上一级目录 = 启动目录.Substring(0, 上一级目录结束位置);
    var 上两级目录结束位置 = 上一级目录.LastIndexOf("\\");
    string P_str_creportPath = 启动目录.Substring(0, 上两级目录结束位置);有的程序员嘲笑别人“写中文变量名”,可是它自己起的“长长的”英文变量名根本看不懂,甚至直接就喜欢写你所贴出的那种难阅读的代码,甚至找个理由说“这样运行效率高”,这都缺乏一定的训练的。
      

  6.   

    这个程序的含义,就是在启动目录字符串种,先找到上一级目录结束位置,然后找到上一级目录字符串,然后再找到上两级目录结束位置,然后再找到上两级目录字符串,最后赋值给 P_str_creportPath 变量。你看不懂有多方面原因。其中首先一个原因,就是你看到了一个很糟糕的风格的代码。
      

  7.   


    这段代码是截取exe文件路径的一部分。
    1.你鼠标点方法名,然后f12,跳到定义,就可以看到方法的介绍了;
    2.多层嵌套着,阅读起来不方便。