Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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# 为什么我需要重置一个变量?_C#_Variables_Reset - Fatal编程技术网

C# 为什么我需要重置一个变量?

C# 为什么我需要重置一个变量?,c#,variables,reset,C#,Variables,Reset,重置变量与不重置变量有什么区别?比如说 public static int Digits(int f) { int result = 0; while (f != 0) { result += f % 10; f /= 10; } return result; } 这里int result=0我已经重置了变量,为什么我需要这样做,如果我不这样做会发生什么 谢谢。您需要这样做,因为C#编译器要求您在允许您读取

重置变量与不重置变量有什么区别?比如说

public static int Digits(int f)        
{
    int result = 0;
    while (f != 0)
    {
        result += f % 10;
        f /= 10;
    }
    return result;
}
这里
int result=0
我已经重置了变量,为什么我需要这样做,如果我不这样做会发生什么


谢谢。

您需要这样做,因为C#编译器要求您在允许您读取变量之前先这样做。如果没有,那么编译器将生成一个错误,而不是一个可执行程序

编译器要求这样做的原因是,变量在使用时必须具有某些值(即,保存该变量值的内存位置由一定数量的字节组成,这些字节必须具有某些值),因此,选择不是“是否初始化变量”;这是在知道变量的值与否之间

由于使用具有完全未知和不可预测值的变量进行计算通常不会产生有用的结果,因此编译器会强制您显式执行,以防止意外错误。编译器不需要这样做的语言(例如C和C++)因允许程序员编写这种类型的错误而臭名昭著


值得注意的是,编译器还可以通过其他方式实现相同的目标,例如,通过隐式地将数据类型的值初始化为默认值(对于整数,这将是零)——事实上,它确实对类字段这样做。这个决定取决于语言设计者的推理。

这是家庭作业吗?看起来你至少可以试一下看看会发生什么。试着不这样做,然后看看。这叫做初始化变量,而不是“重置”它。@I'L'L我不知道,thxWell正在做
int result声明它。执行
int结果=0初始化它。阅读更多关于这两个人的信息:非常感谢!现在我明白了。。如果我使用变量而不设置值,那么我将得到一个错误。你向我澄清了几件事。我猜C#是按照消除歧义的方式设计的。通过强制程序员在使用变量之前实例化变量,毫无疑问该变量的值将是什么。即使给它指定一个默认值,也会迫使人们找出默认值。@Abion47毫无疑问,你说得对。