错误信息:
索引超出范围。必须为非负值并小于集合大小。
参数名: startIndex
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: startIndex源错误:行 1376: {
行 1377: // TODO: 在此处添加构造函数逻辑
行 1378: if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
行 1379: SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号
行 1380: while (SourceStr.IndexOf(SeparatorStr) >= 0)
源文件: D:\erpclub4\Components\Components\Components\Systems\DataManage.cs 行: 1378
页面代码为: ************************************************************/
public StringList(string SourceStr, string SeparatorStr)
{
// TODO: 在此处添加构造函数逻辑
if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号运行完if就报上面的错误,
我单步调试里面的值为 SeparatorStr=="," SourceStr.Length - 1 ==“-1”
求前辈指点
索引超出范围。必须为非负值并小于集合大小。
参数名: startIndex
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: startIndex源错误:行 1376: {
行 1377: // TODO: 在此处添加构造函数逻辑
行 1378: if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
行 1379: SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号
行 1380: while (SourceStr.IndexOf(SeparatorStr) >= 0)
源文件: D:\erpclub4\Components\Components\Components\Systems\DataManage.cs 行: 1378
页面代码为: ************************************************************/
public StringList(string SourceStr, string SeparatorStr)
{
// TODO: 在此处添加构造函数逻辑
if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号运行完if就报上面的错误,
我单步调试里面的值为 SeparatorStr=="," SourceStr.Length - 1 ==“-1”
求前辈指点
public StringList(string SourceStr, string SeparatorStr)
{
// TODO: 在此处添加构造函数逻辑
if(SourceStr.Length<1)
return;
if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号
{
// TODO: 在此处添加构造函数逻辑
if(SourceStr==null||SeparatorStr==null)
return;
if(SourceStr.Length<1)
return;
if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号
}
可以改成:
if (SourceStr.Length>0&&SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上
这个改了后错误排除了,不知道会不会影响后面的代码。因为之前的项目中,就是没加大于零的判断,但是运行成功了。小妹有点疑惑,SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1)
这个里面的值为什么不能是负值?如-1
微软规定的,没办法啊。索引从0开始。
那SourceStr.Length - 1 = -1了
哎
参数是null的话 直接报内存bug了
if (string.IsNullOrEmpty(SourceStr)) return;//========>
....
{
// TODO: 在此处添加构造函数逻辑
if(SourceStr==null||SeparatorStr==null)
return;
if(SourceStr.Length<1)
return;
if (SourceStr.IndexOf(SeparatorStr, SourceStr.Length - 1) <= 0)
SourceStr += SeparatorStr;//如果字符串的末尾没有分隔符号,应加上分隔符号
}
例如
public void StringList(string SourceStr, string SeparatorStr)
{