【发布时间】:2011-01-31 08:04:45
【问题描述】:
我正在尝试使用反射提取项目名称,但在子字符串方法期间它给了我“索引超出范围错误”。
string s = System.Reflection.Assembly.GetExecutingAssembly().Location;
int idx = s.LastIndexOf(@"\");
s = s.Substring(idx, s.Length);
我不明白为什么它在第三行给出错误。
请帮助。
【问题讨论】:
-
明确项目名称。代码不包含项目名称。
-
他们早就发明了断点...
-
假设您的路径长度为 15 个字符,s.Length 将为 15。具有 2 个参数的子字符串将接受开始索引和长度,而不是停止索引。因此,在您的示例中,您试图从起始索引中获取 15 个字符,因此索引超出范围。如果您坚持使用 Substring,则需要将第二个参数更改为 s.Length - idx,否则,请按照下面的建议使用 System.IO.Path.GetFileName。请注意,您的方法也会返回 \,所以您真的想要 idx + 1, s.Length - idx - 1
标签: c# .net reflection