如何避免这些变量的初始化?

mir*_*iri 1 .net c# variables initialization

我正在网上阅读(http://www.codinghorror.com/blog/2005/07/for-best-results-dont-initialize-variables.html)我们不应该初始化变量.

不知怎的,我不明白.我经常无法避免这种情况.让我们看一个简单的例子:

public int test(string s)
{
  int start = 0;
  int mod = 2;
  int output = 0;

  foreach (int i in s)
  {
    output = output + (i % mod) + start;
    start++;
  }

  return output;
}
Run Code Online (Sandbox Code Playgroud)

好吧,这可能是废话:-)但问题是:我可以避免初始化吗?也许它不可能用于mod,因为mod从一开始就必须是2并且它将保持2.但是如何开始输出?我只是不能写,int start因为那总是Error Use of unassigned local variable.也许int start = null会更好,但在这种情况下它也不会起作用.那么如何避免这些东西呢?

Joe*_*ton 5

你误读了他的文章.在他的文章中,他特别谈到了关于类的变量的初始化.在您提出的情况下,您的变量应该在可以使用之前进行初始化,因为它们会立即被使用.

编辑:是的,在这种特定情况下,int变量不需要初始化,因为编译器会自动将a初始化int为0,但如果使用a string或a 进行不同程度的DateTime初始化,则初始化在方法的上下文中变得很重要.


Ray*_*hen 5

你误读了这篇文章.本文讨论的是成员变量(它们会自动初始化为默认值,因此不需要显式初始化),但您尝试将规则应用于局部变量(不会自动初始化,因此需要显式初始化).