我无法理解它是如何工作的.
private Person _user;
private Person User
{
get
{
return _user ?? ( _user = GetUser() );
}
}
Run Code Online (Sandbox Code Playgroud)
我第一次引用User属性时,_user为null所以它返回(_user = GetUser())????
我错过了什么?
我见过类似以下不相关的代码:
Console.Write(myObject?.ToString());
return isTrue ? "Valid" : "Lie";
return myObject ?? yourObject;
int? universalAnswer = 42;
Run Code Online (Sandbox Code Playgroud)
问号的所有用法是相关的还是不同的?他们每个人的意思是什么?
可能重复:
C#中两个问号共同意味着什么?
我正在看一个MVC项目,cshtml页面的第一行是:
@if (Model.DatabaseIssue ?? false) {
Run Code Online (Sandbox Code Playgroud)
}
这是什么意思?什么是双?? 为什么用它?
可能重复:
C#中两个问号共同意味着什么?
任何人都可以解释这种语法.
protected string CompanyProductSeriesId
{
get
{
return Request.QueryString["CPGId"]
?? (ViewState["CPSId"] == null
? ""
: ViewState["CPGId"].ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我想要坚持下去?在这个语法中.
我正在尝试将记录提取到listarray中,如下所示:
List<Car> lst = new List<Car>();
string str = "select * from Inventory";
using(SqlCommand cmd = new SqlCommand(str,this.sqlcon))
{
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
lst.Add(new Car
{
CarId = (int)rdr["CarId"],
Make = (string)(rdr["Make"] ?? ""),
Color= (string)(rdr["Color"] ?? ""),
PetName = (string)(rdr["PetName"] ?? "")
});
}
rdr.Close();
}
Run Code Online (Sandbox Code Playgroud)
Make,color和petname可能具有空值,因此我使用了??运算符.我收到以下错误
无法将system.dbnull类型的对象强制转换为'system.string'.
在这种情况下检查null的正确方法是什么?