C#7.0模式匹配与new out参数混合

Nai*_*air 2 c# c#-7.0

我的目标是在模式 匹配和c#7.0中的new out变量的帮助下解析和打印传入的变量.然而,该方法抱怨未初始化的局部变量'i'.不知道我哪里出错了?

static void Main(string[] args)
{
    var input = "23";
    Print(input);
}

static void Print(object o)
{            
    if (o is int || (o is string && int.TryParse((string)o, out int i)))
        Console.WriteLine(i.ToString());            
}
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 6

i没有确保设置.如果o is inttrue,if则不执行第二部分.

你必须i在第一个条件中分配:

if (o is int i || (o is string s && int.TryParse(s, out i))
{
    Console.WriteLine(i.ToString());
}
Run Code Online (Sandbox Code Playgroud)