C# 我真的需要为此方法创建并返回集合吗?
我见过人们使用C# 我真的需要为此方法创建并返回集合吗?,c#,.net-core,C#,.net Core,我见过人们使用yield-return,尽管每次我尝试在foreach中使用它时,它都会告诉我这样一个道理:CollectDictionary的主体不能是迭代器块,因为Dictionary不是一个interator接口类型 我有很多方法行下面,有没有办法减少样板文件 public Dictionary<string, object> CollectDictionary() { var configLines = File.ReadAllLines(_file).Where(I
yield-return
,尽管每次我尝试在foreach
中使用它时,它都会告诉我这样一个道理:CollectDictionary的主体不能是迭代器块,因为Dictionary不是一个interator接口类型
我有很多方法行下面,有没有办法减少样板文件
public Dictionary<string, object> CollectDictionary()
{
var configLines = File.ReadAllLines(_file).Where(IsValidConfigLine);
var configElements = new Dictionary<string, object>();
foreach (var configElement in configLines)
{
configElements.Add(configElement.Split("=")[0], configElement.Split("=")[1]);
}
return configElements;
}
公共词典收集词典()
{
var configLines=File.ReadAllLines(_File).Where(IsValidConfigLine);
var configElements=new Dictionary();
foreach(configLines中的var configElement)
{
configElements.Add(configElement.Split(“=”[0]),configElement.Split(“=”[1]);
}
返回配置元素;
}
您可以通过使用来减少代码量
您可以通过使用来减少代码量
Woops,我刚刚完成编码,是的,它是为了获取[1]作为第二个参数。afaik
yield return
仅适用于IEnumerable
,IEnumerable
,IEnumerator
和IEnumerator
。您可以在从文件返回的IEnumerable
上使用.ToDictionary
。ReadAllLines().Where()
链将其转换为字典,对条目键和条目值使用单独的逐值投影。这是因为口述词不是迭代器接口类型(IEnumerable ect)。呜呜,我刚刚完成了它的编码,是的,它是为了获取[1]作为第二个参数。afaikyield return
仅适用于IEnumerable
,IEnumerable
,IEnumerator
和IEnumerator
。您可以在从文件返回的IEnumerable
上使用.ToDictionary
。ReadAllLines().Where()
链将其转换为字典,对条目键和条目值使用单独的逐值投影。这是因为dictorial不是迭代器接口类型(IEnumerable ect)。
public Dictionary<string, object> CollectDictionary()
{
string[] configLines = new string[]
{
"foo1=bar1",
"foo2=bar2",
"foo3=bar3",
"foo4=bar4",
};
return configLines.Select(configElement => configElement.Split("="))
.ToDictionary(splt => splt[0], splt => (object)splt[1]);
}
{
{ "foo1", "bar1" },
{ "foo2", "bar2" },
{ "foo3", "bar3" },
{ "foo4", "bar4" }
}