Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReSharper代码注释异步任务<;T>;_C#_.net_Annotations_Async Await_Resharper - Fatal编程技术网

C# ReSharper代码注释异步任务<;T>;

C# ReSharper代码注释异步任务<;T>;,c#,.net,annotations,async-await,resharper,C#,.net,Annotations,Async Await,Resharper,是否可以标记异步任务的结果可以为空?使用属性[CanBeNull]无效,因为异步任务的返回值从不为空 [CanBeNull] // not working... private async Task<T> doSomeFancyAsyncStuff([NotNull] object icantbenull) { ... [CanBeNull]//不工作。。。 私有异步任务doSomeFancyAsyncStuff([NotNull]对象icantbenull){。。。 您可以使用R

是否可以标记
异步任务的结果可以为空?使用属性[CanBeNull]无效,因为异步任务的返回值从不为空

[CanBeNull] // not working...
private async Task<T> doSomeFancyAsyncStuff([NotNull] object icantbenull) { ...
[CanBeNull]//不工作。。。
私有异步任务doSomeFancyAsyncStuff([NotNull]对象icantbenull){。。。

您可以使用Resharper
ItemCanBeNullAttribute

可以应用于从IEnumerable派生的类型的符号以及任务和惰性类的符号,以指示集合项、任务.Result属性或惰性.value属性的值可以为空

适用于您的示例:

[ItemCanBeNull]
public async Task<string> GetSomeName() {
    var time = DateTime.Now;
    if(time.Second == 30) { 
        return "Jimmy"; 
    } else {
        return null;
    }
}
[ItemCanBeNull]
公共异步任务GetSomeName(){
var time=DateTime.Now;
如果(time.Second==30){
返回“吉米”;
}否则{
返回null;
}
}

在这种情况下,它永远不会为null,因为编译器正在任务中包装您的方法返回值-如果您删除了async关键字,并且必须自己处理任务返回值,那么我会想象它会很好地工作。我假设您实际想要的是说
任务的
结果可以为null,c正确吗?你想指出任务的结果可以为空吗?当然可以,但任务本身不能。@MartinLiversage是的,这是我的意图。只是为了确保如果其他程序员试图使用结果而不检查结果是否为空,resharper会惹恼他们。我相信你的问题是关于和否。T可能是n如果它是一个类,则ull是明确的,但我想使用代码契约将其显式标记为结果
[CanBeNull]
你说的是Resharper CanBeNull属性吗?谷歌会快速搜索到这一点,你可以添加你的评论作为答案,这样我就可以标记它吗?也许有人会像我一样感到困惑。我以为该属性是MS代码契约的东西。很抱歉造成困惑:)