c#开关处的变量重置为0
好吧,我是c#的新手,请容忍我 此代码在一定程度上起作用:c#开关处的变量重置为0,c#,C#,好吧,我是c#的新手,请容忍我 此代码在一定程度上起作用: if (rng.Value != null) { string cellValue = rng.Value.ToString(); } else {
if (rng.Value != null)
{
string cellValue = rng.Value.ToString();
}
else
{
string cellValue = "Null";
}
switch (cCnt)
{
case 1:
因此,这将逐个单元格从Excel工作表单元格中获取值,并将其放入cellValue中,除非该值为空
当我在调试中单步执行它直到它到达开关时,一切都很好,此时cellValue的值每次都被设置为0,即使存在有效数据。我做错了什么?您的声明在
if
块中。改为:
string cellValue = string.Empty;
if (rng.Value != null)
{
cellValue = rng.Value.ToString();
}
else
{
cellValue = "Null";
}
switch (cCnt)
{
case 1:
您的声明在
if
块中。改为:
string cellValue = string.Empty;
if (rng.Value != null)
{
cellValue = rng.Value.ToString();
}
else
{
cellValue = "Null";
}
switch (cCnt)
{
case 1:
这里缺少的概念称为范围
cellValue
变量在if
和else
块中声明,这意味着在到达开关
块时它已超出范围。您希望在if
块上方声明该变量,这样它将具有更大的范围
string cellValue = "Null";
if (rng.Value != null)
{
cellValue = rng.Value.ToString();
}
switch (cCnt)
{
case 1:
这里缺少的概念称为范围
cellValue
变量在if
和else
块中声明,这意味着在到达开关
块时它已超出范围。您希望在if
块上方声明该变量,这样它将具有更大的范围
string cellValue = "Null";
if (rng.Value != null)
{
cellValue = rng.Value.ToString();
}
switch (cCnt)
{
case 1:
cCnt
是您正在打开的,而不是cellValue
-您的问题不清楚(同样cellValue
在if
和else
块之外不存在)如何在开关
语句中访问cellValue
?它只在if/else块中声明。您如何观察到它被设置为0
?你希望它被设置成什么?为什么?查看完整的switch语句会有帮助。cCnt
是您正在打开的,而不是cellValue
-您的问题不清楚(而且cellValue
在if
和else
块之外不存在)在开关
语句中如何访问cellValue
?它只在if/else块中声明。您如何观察到它被设置为0
?你希望它被设置成什么?为什么?看到整个switch语句会很有帮助。好吧,我不明白一件事,为什么每个人,当看到一个有很高声誉的人回答(不管什么)时,总是自动向上投票?我们都知道,可能是他再次声明了他的变量(因为它在switch
块中不可访问)。但请给OP指出一个正确的方法来更新他的代码,注意假设一些东西,然后把它写在答案中。当它回答我的问题并解决问题时,我投了赞成票。不熟悉c#,所以不知道范围。@DavidWest实际上这个问题应该标记为脱离主题寻求调试帮助(“为什么这段代码不起作用?”)并关闭。好吧,我不明白一件事,为什么每个人在看到声誉很高的人回答问题时(无论什么),总是自动向上投票?我们都知道,可能是他再次声明了他的变量(因为它在switch
块中不可访问)。但请给OP指出一个正确的方法来更新他的代码,注意假设一些东西,然后把它写在答案中。当它回答我的问题并解决问题时,我投了赞成票。不熟悉c#,所以不知道范围。@实际上,这个问题应该标记为脱离主题寻求调试帮助(“为什么这段代码不工作?”),然后关闭。