这个操作员是什么,“??”
这个问题在这里已经有了答案:
好吧,这看起来像一个错误。 该代码正在查看Context.ContentDatabase
或Context.Database
是否为null
,然后继续使用前者,即使它为null
。
代码应该如下所示:
var database = Context.ContentDatabase ?? Context.Database;
if (fieldConfiguration == null && database != null)
{
Item obj = database.SelectSingleItem(
string.Format("//*[@@templateid='{0}' and @@key='{1}']",
(object) TemplateIDs.TemplateField, (object) fieldName));
}
它使用空合并运算符将数据库存储在单独的变量中,然后对其进行操作(如果它不为null
。
所以你应该联系提供这个库的团队,并向他们提交一个错误。
(Context.ContentDatabase ?? Context.Database)
如果Context.ContentDatabase不为null,则结果为Context.ContentDatabase
,否则将为Context.Database
。 null-coalesce运算符是向前进行简化null
检查的一个步骤。
文档:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operator
假设Context.ContentDatabase和Context.Database是相同的类型。 下面的代码应该可以工作。
var contentDatabase = Context.ContentDatabase ?? Context.Database;
if (fieldConfiguration == null && contentDatabase != null)
{
Item obj = contentDatabase.SelectSingleItem(
string.Format("//*[@@templateid='{0}' and @@key='{1}']",
(object) TemplateIDs.TemplateField, (object) fieldName));
}
链接地址: http://www.djcxy.com/p/53851.html
上一篇: What is this operator, "??"
下一篇: The this keyword and double question mark (??) confuse me