我在面向.NET Framework 4.6.1的项目中使用VisualStudio 2017。
使用Task
,CancellationToken
和本地方法,我来到了这段代码:
class Program
{
static void Main(string[] args)
{
CancellationToken o;
Console.WriteLine(o);
}
}
哪个编译。现在,如果您将o
的类型更改为int
或string
它不会编译,则会显示错误:
本地变量' 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);
}
}
CancellationToken
不需要初始化?有趣的事实:如果你将它与本地功能混合,你可以这样写:
class Program
{
static void Main(string[] args)
{
Work();
CancellationToken o;
void Work() => Console.WriteLine(o);
}
}
哪个编译。