繁体   English   中英

我在 C# 上遇到编译器错误你能帮帮我吗?

[英]I get Compiler Error on C# Can you help me?

我收到一个错误你能帮我吗

Visual Studio 说打印部分的 h 有问题:

错误 CS0165:使用未分配的局部变量 'h' (CS0165)

static void Main()
{
    int[ , ] m = new int [8,8];
    int i ;
    int h ;
    Random rnd = new Random();
    for( i = 0 ; i< 8 ; i++)
    {
        for( h = 0 ; h< 8 ; h++)
        {
            m[i,h] = rnd.Next(10);
        }
    }
    Console.WriteLine(m[i,h]);
      
}

您的变量没有赋值:

int i ;
int h ;

现在,编译器知道i在这里被赋值:

for( i = 0 ; i< 8 ; i++)

无需在引擎盖下看得太深,基本上i = 0部分无论循环体是否执行都会保证发生。 那么我们知道这里也会给h赋值:

for( h = 0 ; h< 8 ; h++)

因为我们知道外循环至少会执行一次,因为我们知道 0 小于 8。但是编译器并没有意识到这一点。 编译器遵循一组更简单的规则来保证它。 而且这些规则不包括执行程序的逻辑以查看是否会发生某些事情。

所以底线是,虽然编译器可以保证i将被分配一个值,但它不能保证h会。 因此错误。

简单的解决方案就是为变量赋值:

int i = 0;
int h = 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM