Cor*_*son 28 .net linq ado.net cancellation-token
看看CancellationToken.None它的实现,它只是回归default(CancellationToken).但是,我在CancellationToken文档中看不到两者是等价的.
我想提供这样的API,但直到我确定它总能工作:
Task DoSomething(CancellationToken token = default(CancellationToken))
Run Code Online (Sandbox Code Playgroud)
它定义的行为default(CancellationToken)是否相同CancellationToken.None,或者这只是一个实现细节?
qxg*_*qxg 16
他们是一样的.检查源代码
public static CancellationToken None
{
get { return default(CancellationToken); }
}
Run Code Online (Sandbox Code Playgroud)
CancellationToken.None 只需返回新的CancellationToken:
public static CancellationToken None
{
get
{
return new CancellationToken();
}
}
Run Code Online (Sandbox Code Playgroud)
因此CancellationToken是一个结构,然后default(CancellationToken)将返回相同的值.C#Spec 5.2:
对于value-type的变量,默认值与value-type的默认构造函数计算的值相同
更新:此行为未在MSDN上定义,因此您只能依赖当前实现.