【问题标题】:Use of unassigned local variable 'x' [duplicate]使用未分配的局部变量“x”[重复]
【发布时间】:2016-10-08 22:52:30
【问题描述】:

这段代码:

int a;
if(a==1){ do something}

Image img;
   if(img!=null){do something}

这些代码会产生错误:

使用未分配的局部变量“变量名”

我知道这个错误到底是什么意思以及如何解决它。但我想知道的是

  1. 声明的变量不应该有值吗?喜欢nullImage

2.为什么不允许比较变量?它可以简单地说它不匹配。

【问题讨论】:

  • 使用未初始化的变量通常是一个错误。当一个未初始化的变量可能包含随机数据时,它可能源于 C/C++。

标签: c# variables


【解决方案1】:
  1. 声明的变量不应该有值吗?比如`Image'的null

没有。这不是定义语言的方式。局部变量在 C#(或大多数其他语言,但绝不是全部)中没有默认值。

2.为什么不允许比较变量?它可以简单地说它不匹配。

因为您正在尝试读取从未分配过值的变量的值,根据定义,这是一个错误(在 C# 中)。因此,它会提醒您注意该错误。

【讨论】:

  • "或大多数其他语言" --- 最多,还是最少?
  • @zerkms:我熟悉的大多数高级语言不会为局部变量分配默认值——C、Java、C#……我日常经验中的例外是 JavaScript,默认为undefined
  • @zerkms:显示我的 C++ 是多么生疏(已经 20 多年了)。
  • C++ 允许您使用未分配的局部变量,但并非所有编译器都初始化它们。编译器为变量分配的内存位置恰好是零。
猜你喜欢
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-18
  • 2015-11-09
  • 2012-05-18
  • 1970-01-01
相关资源
最近更新 更多