c#带??然后呢?操作人员
很抱歉问了一个简单的问题, 我是Azure函数HTTPtriggers与C#的新手, 有人知道什么是c#带??然后呢?操作人员,c#,C#,很抱歉问了一个简单的问题, 我是Azure函数HTTPtriggers与C#的新手, 有人知道什么是name=name??数据?名称以c#表示的平均值 它本质上意味着 if name is not null set name to name else if data is null set name to null else set name to data.name 第二个操作符()通过返回null而不是尝试使用访问修饰符来避免出现NullReferenceExc
name=name??数据?名称代码>以c#表示的平均值
它本质上意味着
if name is not null
set name to name
else
if data is null
set name to null
else
set name to data.name
第二个操作符()通过返回null而不是尝试使用访问修饰符来避免出现NullReferenceException
。如果值不为null,则第一个()返回第一个操作数,否则返回第二个操作数
请注意,这两个都不是特定于动态
或Azure的
它也可以写成
if ((name == null) && (data != null))
{
name = data.name;
}
如果name
不是null
获取该值,如果是,则尝试获取data?.name
。表达式data?.name
查看data
是否为null
,如果是,则返回null
,否则返回data.name
的值。您有两个问题,这两个问题都通过极其简单的谷歌搜索得到回答:“c#双问号”和“c#带点问号”。或者只是C#documentation谢谢你的评论@Alexeylarionov只是想确定这两个词放在一起是什么意思。感谢您的所有解释和相关问题链接,@camiloterevinto如果所有检查都为假,@camiloterevinto您的第二个算法将不会设置空值;)若名称不为空,则名称设置为自身。如果name为null,data为null,则无需再次将name设置为null。您是正确的,它不会影响任何内容,只是为了完整性。谢谢您的解释,它更清晰。第一个(?)返回第一个操作数,如果值为null,则返回第一个操作数。这是错误的,如果值不为null,则返回第一个操作数。
if ((name == null) && (data != null))
{
name = data.name;
}