这个关键字和双重问号(??)混淆了我
可能重复:
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
对象为空时,你会得到另一个字符串分配给你的字符串。
上一篇: The this keyword and double question mark (??) confuse me