以下函数生成错误,“使用未分配的局部变量'intLast'。我不确定我做错了什么。
static string RemovePath(string strInput)
{
int intLast;
for (int i = 1; i < strInput.Length; i++)
{
if (strInput.Substring(i, 1) == @"\")
{
intLast = i;
}
}
string strOutput = strInput.Substring(strInput.Length - intLast);
return strOutput;
}
答案 0 :(得分:2)
您正在使用以下行中的变量intLast
:
string strOutput = strInput.Substring(strInput.Length - intLast);
但该变量仅在某些条件下具有值(strInput.Length > 1
和strInput.Substring(i, 1) == @"\"
)。因此错误。
要解决此问题,请在声明中提供默认值:
int intLast = 0; // or any default value.
答案 1 :(得分:0)
使用某个值初始化intLast
,因为循环无法确保分配值,因为循环的执行是在运行时决定的。
int intLast = 0;
以下行询问未分配的变量,因为控件可能不会进入循环以分配值。
string strOutput = strInput.Substring(strInput.Length - intLast);
答案 2 :(得分:0)
由于您只在条件内部指定intLast
,因此从编译器的角度来看,您可以在不初始化的情况下使用它。
您应该在开始时将其初始化为某个默认值,即使您不希望使用它。
int intLast = 0
答案 3 :(得分:0)
您需要为intLast
分配默认值。
试试这个:
static string RemovePath(string strInput)
{
int intLast = 0;
for (int i = 1; i < strInput.Length; i++)
{
if (strInput.Substring(i, 1) == @"\")
{
intLast = i;
}
}
string strOutput = strInput.Substring(strInput.Length - intLast);
return strOutput;
}
答案 4 :(得分:0)
只需修改:
int intLast = 0;
整个代码将如下所示:
静态字符串RemovePath(string strInput) { int intLast = 0;
for (int i = 1; i < strInput.Length; i++)
{
if (strInput.Substring(i, 1) == @"\")
{
intLast = i;
}
}
string strOutput = strInput.Substring(strInput.Length - intLast);
return strOutput;
}
您最初必须将intLast
指定为零。
答案 5 :(得分:0)
您应该初始化您的intLast
变量。
编译器不知道无论如何都会分配像intLast
这样的变量。
int intLast = 0;
答案 6 :(得分:0)
您应该初始化您的变量,如
int intLast = 0;
因为如果代码无法达到if条件,它可能会保持未分配状态。