c#的问号(?)和双问号语法糖(??)的用法和在unity中使用需要注意的事项

public class CustomObject 
{   
    public string CodeName;
}

CustomObject obj1;

if(obj1!=null){
  obj1.CodeName="12345";
}
//等价于
obj1?.CodeName="12345";
//=================================================================

CustomObject obj2;
if(obj1.CodeName!=null){
	obj2.CodeName=Obj1.CodeName
}else{
	obj2.CodeName="54321";
}
//等价于
obj2.CodeName=obj1.CodeName??"54321";
//=================================================================

//同时使用
if(obj1!=null){
	if(obj1.CodeName!=null){
		obj2.CodeName=obj1.CodeName;
	}else{
	obj2.CodeName="54321";
	}
}
//等价于
obj2.CodeName=obj1?.CodeName??"54321";

注意:以上语法最好不要对unity自带的组件进行操作,原因是unity底层重载了组件的!=和==运算符,如果对unity组件操作会造成结果错误,具体参考雨松大佬的博客

你可能感兴趣的:(c#的问号(?)和双问号语法糖(??)的用法和在unity中使用需要注意的事项)