相关疑难解决方法(0)

实例字段与局部变量的初始化

我一直想知道为什么在下面的例子中可以初始化实例字段(依赖它将具有其默认值)并访问它,而局部变量显然必须初始化,即使我将其初始化为默认值无论如何它会得到......

  public class TestClass
  {
    private bool a;

    public void Do()
    {
      bool b; // That would solve the problem: = false;
      Console.WriteLine(a);
      Console.WriteLine(b); //Use of unassigned local variable 'b'
    }
  }
Run Code Online (Sandbox Code Playgroud)

.net c# clr

18
推荐指数
2
解决办法
8949
查看次数

为什么CancellationToken类型的局部变量不需要初始化?

我在针对.NET Framework 4.6.1的项目中使用VisualStudio 2017.

Task,CancellationToken和本地方法,我来到这个代码:

class Program
{
    static void Main(string[] args)
    {
        CancellationToken o;
        Console.WriteLine(o);
    }
}
Run Code Online (Sandbox Code Playgroud)

哪个编译.现在,如果您将类型更改o为a intstring它将无法编译,则会给出错误:

在访问之前,可能不会初始化局部变量"o".

我试图CancellationToken在名为的结构中反编译并复制代码MyCancellationToken.那也不会编译.

我设法编译的唯一情况是一个空结构或包含一个结构的结构CancellationToken.

struct EmptyStruct
{
}

struct MagicStruct
{
    public CancellationToken a;
}

class Program
{
    static void Main(string[] args)
    {
        EmptyStruct a;
        MagicStruct b;
        Console.WriteLine(a);
        Console.WriteLine(b);
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 为什么CancellationToken不需要初始化?
  • 有哪些不需要初始化的类型?

有趣的事实:如果你将它与本地函数混合,你可以这样写:

class Program
{
    static void Main(string[] args)
    {
        Work();

        CancellationToken …
Run Code Online (Sandbox Code Playgroud)

c# constructor struct cancellation-token

10
推荐指数
0
解决办法
86
查看次数

标签 统计

c# ×2

.net ×1

cancellation-token ×1

clr ×1

constructor ×1

struct ×1