C# 调试中未赋值局部变量的使用

C# 调试中未赋值局部变量的使用,c#,variables,C#,Variables,在Visual Studio 2012中,我有一个简单的示例: 当我调试代码并将光标移到i上以获取它的当前值时,我希望 未赋值局部变量的使用 但是有一个未设置的0——为什么会有0?这是因为int不是a MSDN: 基于值类型的变量直接包含值。 将一个值类型变量赋值给另一个值类型变量会复制所包含的 价值这与引用类型变量的赋值不同, 它复制对对象的引用,但不复制对象本身 看一看 我希望它会有帮助。当您声明任何局部/块变量时,它们没有得到默认值。在访问它之前,它们必须分配一些值,否则编译器将抛出错误

在Visual Studio 2012中,我有一个简单的示例:

当我调试代码并将光标移到
i
上以获取它的当前值时,我希望

未赋值局部变量的使用

但是有一个未设置的
0
——为什么会有
0

这是因为int不是a

MSDN:

基于值类型的变量直接包含值。 将一个值类型变量赋值给另一个值类型变量会复制所包含的 价值这与引用类型变量的赋值不同, 它复制对对象的引用,但不复制对象本身

看一看


我希望它会有帮助。

当您声明任何局部/块变量时,它们没有得到默认值。在访问它之前,它们必须分配一些值,否则编译器将抛出错误。如果变量具有全局范围,则可以指定和访问默认值。如果变量为引用类型,则默认值为
null
。这包含基本数据类型的默认值:

编译器将不允许这样做(因为它是本地/块变量):

 public static void samplemethod()
   {
      int a;
      int b = a;
   }
 public  int i;
 public void samplemethod()
        {
            int a;
            int b = i;
        }
其中,由于变量具有全局作用域,以下代码可以正常工作:

 public static void samplemethod()
   {
      int a;
      int b = a;
   }
 public  int i;
 public void samplemethod()
        {
            int a;
            int b = i;
        }

@wudzik可能重复-好的,假设这个变量的值
0
。。为什么我不能用它?为什么-1?我做错什么了吗?在我看来,人们似乎不明白这个问题是关于为什么调试器可以告诉你“值”,而不是关于为什么你不能使用它。也许他们认为引用的文本是您收到的错误消息,并跳过其余文本。。。乍一看,我不确定你能做些什么来防止这种情况。编辑:在寻找秒后,VisualStudio和调试器标记而不是“变量”可能会更好。也许可以更频繁地将“调试器向我展示”放在问题主体中。