未分配的变量错误
Unassigned variable error
using System;
namespace ConsoleApplication
{
class Program
{
public delegate void mydel(int z);
static void Main(string[] args)
{
Program p = new Program();
Random r = new Random();
int k = r.Next(99);
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
if (k < 50)
{
f = new mydel(p.low);
}
//f(k) is underlined and Use of unassigned local variable 'f'
f(k);
}
//methods
public void high(int m)
{
Console.WriteLine("{0}>50", m);
}
public void low(int n)
{
Console.WriteLine("{0}<50", n);
}
}
}
我希望 f(k) 能工作,因为我给了委托参数。为什么会出现此错误? (在 f(k) 部分使用未分配的局部变量 'f')
只需添加null
mydel f = null
或者在条件之间加上else。因为,当 k == 50
f 没有初始化时:
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
else
{
f = new mydel(p.low);
}
if k > 50
那么 f 是某个委托,如果 k < 50
- 也是。如果k == 50
呢? f
在这种情况下未指定(即使它不为空) - 因此您不能使用它。
快速修复:
mydel f = null;
但是当k == 50
时你会得到NullReferenceException
;
您还可以为 k == 50
;
的情况添加额外的 if
using System;
namespace ConsoleApplication
{
class Program
{
public delegate void mydel(int z);
static void Main(string[] args)
{
Program p = new Program();
Random r = new Random();
int k = r.Next(99);
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
if (k < 50)
{
f = new mydel(p.low);
}
//f(k) is underlined and Use of unassigned local variable 'f'
f(k);
}
//methods
public void high(int m)
{
Console.WriteLine("{0}>50", m);
}
public void low(int n)
{
Console.WriteLine("{0}<50", n);
}
}
}
我希望 f(k) 能工作,因为我给了委托参数。为什么会出现此错误? (在 f(k) 部分使用未分配的局部变量 'f')
只需添加null
mydel f = null
或者在条件之间加上else。因为,当 k == 50
f 没有初始化时:
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
else
{
f = new mydel(p.low);
}
if k > 50
那么 f 是某个委托,如果 k < 50
- 也是。如果k == 50
呢? f
在这种情况下未指定(即使它不为空) - 因此您不能使用它。
快速修复:
mydel f = null;
但是当k == 50
时你会得到NullReferenceException
;
您还可以为 k == 50
;
if