【问题标题】:Why I need to reset a variable? [duplicate]为什么我需要重置一个变量? [复制]
【发布时间】:2016-10-02 22:42:02
【问题描述】:

如果我重置变量有什么区别?例如

public static int Digits(int f)        
{
    int result = 0;
    while (f != 0)
    {
        result += f % 10;
        f /= 10;
    }
    return result;
}

这里int result = 0我已经重置了变量,为什么我需要这样做,如果我不这样做会发生什么?

谢谢。

【问题讨论】:

  • 这是作业吗?看来你至少可以试试看会发生什么。
  • 尽量不要那样做,看看。
  • 这叫做初始化变量,而不是“重置”它。
  • @I'L'L 我不知道,谢谢
  • 做得好int result; 声明它。执行int result = 0; 会对其进行初始化。在此处阅读有关两者的更多信息:en.wikipedia.org/wiki/Initialization_(programming)

标签: c# variables reset


【解决方案1】:

您需要这样做,因为 C# 编译器在允许您从变量中读取之前要求您这样做。如果不这样做,那么编译器会产生错误而不是可执行程序。

编译器要求这样做的原因是变量在使用时必须具有 some 值(也就是说,保存该变量值的内存位置由一个数字组成必须具有 some 值的字节数),因此实际上并不是在“是否初始化变量”之间进行选择;它介于知道变量具有或不具有什么值之间。

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

有趣的是,编译器可以通过其他方式实现相同的目标,例如通过将值隐式初始化为数据类型的默认值(对于整数,这将是零)——事实上,它确实对类字段执行此操作。该决定取决于语言设计者的推理。

【讨论】:

  • 非常感谢!现在我明白了。如果我在不设置值的情况下使用变量,那么我会得到一个错误。你向我澄清了一些事情。
  • 我的猜测是 C# 的设计方式是为了消除歧义。通过强制程序员在变量可以使用之前对其进行实例化,毫无疑问该变量的值将是什么。即使为其分配默认值也会迫使人们找出默认值
  • @Abion47 毫无疑问,你是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
相关资源
最近更新 更多