C#有条件地声明变量

时间:2020-06-24 16:22:51

标签: c#

我正在尝试声明一个依赖于布尔'multiline'的变量。

<...一些代码...>

if (multiline)
{
    string[] line;
}
else 
{
    string line;
}

<...使用“行”的代码...>

但是这无效,因为变量的声明在错误的堆栈级别(我认为);这些变量只能在if / else语句中使用,但我希望能够在if / else语句之外使用它们。

C#中是否可以有条件地创建变量?

2 个答案:

答案 0 :(得分:0)

string[] str;
if (multiline)
{
    string[] line = str;
}
else 
{
    string line = str[0];
}

答案 1 :(得分:0)

简短的回答是“否”。 但是,我认为这个问题没有得到很好的解释。如果要动态声明变量或动态使用其值,请重新考虑。

如果后者正确,则可以通过以下两种方式使用它。

  1. 使用动态
    dynamic lines;
    if (multiline)
    {
        lines = new string[10];
    }
    else
    {
        lines = "<some string value>";
    }
    
    
  2. 使用字符串数组。
    string[] lines;
    if (multiline)
    {
        lines = <<string array values>>
    }
    else
    {
        lines = "<some string value>";
    }
    
    if(lines.Length == 1)
    {
        // handle single line
    }
    
    if(lines.Length > 1)
    {
       // handle multi line
    }
    
    

理解,即使变量是有条件/动态声明的,当您希望处理该变量时,也必须在以后确定类型。我的建议是为这个问题提供更多细节,以便我们更好地帮助您。