这个操作员是什么,“??”

这个问题在这里已经有了答案:

  • C#中两个问号在一起意味着什么? 16个答案

  • 好吧,这看起来像一个错误。 该代码正在查看Context.ContentDatabaseContext.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