C# 未分配变量误差 使用系统; 命名空间控制台应用程序 { 班级计划 { 公共代表无效mydel(int z); 静态void Main(字符串[]参数) { 程序p=新程序(); 随机r=新随机(); int k=r.Next(99); 迈德尔f; 如果(k>50) { f=新迈德尔(p.high); } if(k50”,m); } 公共空间低(整数n) { WriteLine(“{0}
只需添加C# 未分配变量误差 使用系统; 命名空间控制台应用程序 { 班级计划 { 公共代表无效mydel(int z); 静态void Main(字符串[]参数) { 程序p=新程序(); 随机r=新随机(); int k=r.Next(99); 迈德尔f; 如果(k>50) { f=新迈德尔(p.high); } if(k50”,m); } 公共空间低(整数n) { WriteLine(“{0},c#,unassigned-variable,C#,Unassigned Variable,只需添加null 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();
null
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);
}
}
}
或者将else置于条件之间。因为,当k==50
f未初始化时:
mydel f = null
只需添加
null
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);
}
}
}
或者将else置于条件之间。因为,当k==50
f未初始化时:
mydel f = null
如果
k>50
,那么f是某个委托,如果k<50
-也是。如果k==50
,该怎么办?f
在这种情况下没有指定(即使它不是空的),所以不能使用它
快速修复:
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
else
{
f = new mydel(p.low);
}
但是当k==50时,您将得到NullReferenceException
;
您还可以为k==50
的情况添加额外的if
;如果k>50
那么f是一些委托,如果k<50
也是。如果k==50
呢?f
在这种情况下没有指定(即使它不是空的),所以您不能使用它
快速修复:
mydel f;
if (k > 50)
{
f = new mydel(p.high);
}
else
{
f = new mydel(p.low);
}
但是当k==50时,您将得到NullReferenceException
;
您还可以为case whenk==50
添加额外的if
;编译器是否在编译时检查if-else块中是否包含了所有可能性?@Lyrk它检查变量是否已初始化。它等于mydel f=k>50?新的mydel(p.high):新的mydel(p.low)
so变量已分配编译器是否检查在编译时是否在if-else块中覆盖了所有可能性?@Lyrk它检查变量是否已初始化。它等于mydel f=k>50?new-mydel(p.high):new-mydel(p.low);
so变量已分配添加额外的else。if(k>50){…}else-if如果k==50
,则不会分配f
。添加其他。如果(k>50){…}否则如果k==50
,则不会分配f
。