Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字典中可能的空赋值包含键_C#_Asp.net_Resharper - Fatal编程技术网

C# 字典中可能的空赋值包含键

C# 字典中可能的空赋值包含键,c#,asp.net,resharper,C#,Asp.net,Resharper,正在获取有关“!redirectsDictionary.ContainsKey(autoRedirect.Key)”的警告 asp.net可能为标记为“notnull”属性的实体分配空值 只是想知道这是怎么回事 private static readonly Dictionary<string, Redirect> AutoRedirectsDictionary = new Dictionary<string, Redirect>(); foreach (var r i

正在获取有关“!redirectsDictionary.ContainsKey(autoRedirect.Key)”的警告

asp.net可能为标记为“notnull”属性的实体分配空值

只是想知道这是怎么回事

private static readonly Dictionary<string, Redirect> AutoRedirectsDictionary = new Dictionary<string, Redirect>();

foreach (var r in db.SelectItems("fast:/sitecore/content/Redirects Root//*[@@templatename='Auto Redirect']"))
        {
            GenerateRedirects(Context.Database.GetItem(r.Fields["Root Node"].Value), r["URL Prefix"]);
            foreach (var autoRedirect in AutoRedirectsDictionary)
            {
                if (!string.IsNullOrEmpty(autoRedirect.Key) & !redirectsDictionary.ContainsKey(autoRedirect.Key))
                {
                    //Add to dictionary
                    redirectsDictionary.Add(autoRedirect.Key, autoRedirect.Value);
                }

            }
        }

public static void GenerateRedirects(Item redirectFolder, string urlPrefix)
        {
            if (redirectFolder == null)
                return;

            var childList = redirectFolder.GetChildren();

            foreach (Item child in childList)
            {
                if (Utilities.HasFieldValue(child, FieldToFind))
                {
                    var shortcutUrl = urlPrefix + child.Fields[FieldToFind].Value.ToLower();

                    if (!string.IsNullOrEmpty(shortcutUrl) && !AutoRedirectsDictionary.ContainsKey(shortcutUrl))
                    {
                        AutoRedirectsDictionary.Add(shortcutUrl,
                        new Redirect(String.Empty, child, true));       
                    }
                }
                else
                {
                    GenerateRedirects(child, urlPrefix);
                }
            }
        }
private static readonly Dictionary AutoRedirectsDictionary=new Dictionary();
foreach(db.SelectItems中的var r(“fast:/sitecore/content/Redirects Root/*[@@templatename='Auto Redirect']))
{
GenerateRedirects(Context.Database.GetItem(r.Fields[“Root Node”].Value),r[“URL Prefix”]);
foreach(AutoRedirectsDictionary中的var autoRedirect)
{
如果(!string.IsNullOrEmpty(autoRedirect.Key)&!redirectsDictionary.ContainsKey(autoRedirect.Key))
{
//添加到字典
redirectsDictionary.Add(autoRedirect.Key、autoRedirect.Value);
}
}
}
公共静态void生成器重定向(项重定向文件夹,字符串URL前缀)
{
如果(重定向文件夹==null)
返回;
var childList=redirectFolder.GetChildren();
foreach(子项列表中的子项)
{
if(Utilities.HasFieldValue(子项,FieldToFind))
{
var shortcutUrl=urlpefix+child.Fields[FieldToFind].Value.ToLower();
如果(!string.IsNullOrEmpty(shortcutUrl)&&!AutoRedirectsDictionary.ContainsKey(shortcutUrl))
{
AutoRedirectsDictionary.Add(shortcutUrl,
新重定向(String.Empty,child,true));
}
}
其他的
{
GenerateDirects(子级,URL前缀);
}
}
}

这可能与您使用单个
&
运算符有关。单个
&
不会使用短路来绕过语句,而是在计算完所有表达式后选择要执行的路径。因此,即使您正在检查
!string.IsNullOrEmpty(autoRedirect.Key)
在ContainsKey调用之前,将首先计算这两个表达式,然后确定执行路径


当我意识到我没有真正回答你的具体问题(你可能已经知道这一点)时,我进行了编辑,但是
!redirectsDictionary.ContainsKey(autoRedirect.Key)
将在密钥为null时引发异常。由于键的数据类型是一个
字符串
,如果它为空,则可能会引发异常,因此会发出警告。

这可能与您使用单个
&
运算符有关。单个
&
不会使用短路来绕过语句,而是在计算完所有表达式后选择要执行的路径。因此,即使您正在检查
!string.IsNullOrEmpty(autoRedirect.Key)
在ContainsKey调用之前,将首先计算这两个表达式,然后确定执行路径


当我意识到我没有真正回答你的具体问题(你可能已经知道这一点)时,我进行了编辑,但是
!redirectsDictionary.ContainsKey(autoRedirect.Key)
将在密钥为null时引发异常。由于键的数据类型是一个
字符串
,如果它为空,则有可能引发异常,因此会发出警告。

您在哪一行收到该警告?警告并不总是意味着该行中存在问题!redirectsDictionary.ContainsKey(autoRedirect.Key)在autoRedirect.Key下面有一个警告,你在哪一行得到这个警告?警告并不总是意味着该行中存在问题!redirectsDictionary.ContainsKey(autoRedirect.Key)在autoRedirect.Key下有一个警告