Ora*_*ace 10 c# constructor struct cancellation-token
我在针对.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 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);
}
}
Run Code Online (Sandbox Code Playgroud)
CancellationToken不需要初始化?有趣的事实:如果你将它与本地函数混合,你可以这样写:
class Program
{
static void Main(string[] args)
{
Work();
CancellationToken o;
void Work() => Console.WriteLine(o);
}
}
Run Code Online (Sandbox Code Playgroud)
哪个编译.