Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用Resharper进行Foreach格式化_C#_Linq_Resharper - Fatal编程技术网

C# 使用Resharper进行Foreach格式化

C# 使用Resharper进行Foreach格式化,c#,linq,resharper,C#,Linq,Resharper,在用C语言编写Windows Phone应用程序的代码时,我写了一个基本的foreach语句,然后Resharper用一个自动更正打了我。我完全不理解他所说的话 以下是原始代码: foreach (var val in settings.Values) { var valInfo = new ValueInfo(val.Value); FooMethod(val); } 这是重拾器代码。它告诉我它与Linq有关,但从MSDN中我看不到它与我的代码的关系 foreach (

在用C语言编写Windows Phone应用程序的代码时,我写了一个基本的foreach语句,然后Resharper用一个自动更正打了我。我完全不理解他所说的话

以下是原始代码:

foreach (var val in settings.Values) 
{
    var valInfo = new ValueInfo(val.Value);
    FooMethod(val);
}  
这是重拾器代码。它告诉我它与Linq有关,但从MSDN中我看不到它与我的代码的关系

foreach (var val in from val in settings.Values 
         let valInfo = new ValueInfo(val.Value) 
         select val) 
{
    FooMethod(val);
}

有人能给我解释一下为什么我的语句与Resharper的类似吗?

好吧,它只是试图用foreach语句中的第一行来压缩foreach的条件,即let valInfo=new ValueInfoval。Value line正在设置valInfo变量。ReSharper的方式看起来确实很糟糕,所以,嘿,请忽略这个建议,保留你所拥有的

但是,如果你真的感到非常好奇

ReSharper foreach护发素的第一部分与您的相同,即

var val in
然后,如果忽略以let开头的行,则只剩下语句

var val in (from val in settings.Values select val)
为了清楚起见,我添加了括号。这基本上是说从someResultSet的thisColumn中选择thisColumn。如果您熟悉SQL,这将有一定的意义


同样,之所以在设置中添加了from val in settings.Values select val,是为了将foreach的条件与foreach语句中的第一行进行压缩;它需要这样做,以便可以使用Linq语句的let部分设置valInfo变量。

它只是建议使用Linq查询。这并不复杂,但可能值得寻找一个教程。就我个人而言,我只是内联valInfo,然后您可能会发现resharper提出了一些建议:

likesettings.Values.ForEach(x=> FooMethod(new ValueInfo(x)));
就我个人而言,我认为简洁易读是最好的方式


语法上可能不正确,但不清楚您对LINQ的理解程度。。。但是我只想从您的第一个语句中完全删除valInfo变量,然后保持其余的不变。请注意,R并不是真的在纠正你——它只是建议一种替代方法。你需要区分R中的提示和建议。这是一个提示。这意味着这样可能更好,这取决于你。在这种特殊情况下,这并不好。