这个关键字和双重问号(??)混淆了我

可能重复:
C#中两个问号在一起意味着什么?

这是一个添加到C#3.x的新功能吗?

例如

public class HttpRequests
{
    public string GetHtmlContent(this HttpRequest myRequest)
    {            
       //do something
       return retStr ?? (retStr=new GetHtmlStr(urlStr));
    }
}

对我来说很陌生,因为我多年来没有更新我对C#的了解。 我知道C#2.x.

对于条件if和返回值ie

return a == 0 ? a:b;

是的,我可以理解这是什么。 有人能解释一下吗?


?? - .Net 2.0引入的空合并运算符

this在方法中 - >指定在C#3.0中引入的现有类型的扩展方法


这是一个null-coalising操作符,请参阅MSDN解释


GetHtmlContent(this HttpRequest myRequest)

那么这个推断它是一个Extension method但是你的代码会被编译,因为你的类不是静态的

当方法的第一个参数包含此修饰符时,该方法被称为扩展方法。 扩展方法只能在非泛型,非嵌套静态类中声明。 扩展方法的第一个参数除此之外可以没有修饰符,参数类型不能是指针类型。

另外?? 是一个空合并运算符

string something = maybenull ?? "I cannot be null";

所以当maybenull对象为空时,你会得到另一个字符串分配给你的字符串。

链接地址: http://www.djcxy.com/p/53849.html

上一篇: The this keyword and double question mark (??) confuse me

下一篇: coalescing operator work in this case?