c#开关处的变量重置为0

c#开关处的变量重置为0,c#,C#,好吧,我是c#的新手,请容忍我 此代码在一定程度上起作用: if (rng.Value != null) { string cellValue = rng.Value.ToString(); } else {

好吧,我是c#的新手,请容忍我

此代码在一定程度上起作用:

                    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#,所以不知道范围。@实际上,这个问题应该标记为脱离主题寻求调试帮助(“为什么这段代码不工作?”),然后关闭。