Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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 when
k==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