Ewe*_*ton 3 c# indexing properties
我必须上课,父亲和孩子(例如)
我的实现的片段
类Father.cs
public class Father
{
public int Id { get; set; }
public string Name { get; set; }
public List<Child> Children { get; set; }
public Father()
{
}
}
Run Code Online (Sandbox Code Playgroud)
类Child.cs
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public Child()
{
}
}
Run Code Online (Sandbox Code Playgroud)
我想尝试做这样的事情
Father f = new Father();
f.Children[0]; // ok
f.Children[1]; // ok
f.Children["John"]; // Duh!
Run Code Online (Sandbox Code Playgroud)
我现在,它错了,我需要在Child Class中实现一些东西,我尝试了这个
public Child this[string name]
{
get
{
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
如何为我的班级Child实现此功能?
A List<T>没有字符串索引器; 你可以在Father课堂上添加一个,但用法是:
var child = parent["Fred"];
Run Code Online (Sandbox Code Playgroud)
(没有小孩)
对于索引器本身:尝试(在索引器中):
return Children.FirstOrDefault(c=>c.Name==name);
Run Code Online (Sandbox Code Playgroud)
要在列表本身上获取索引器,您必须创建自定义列表类型并在那里添加索引器.
IMO,一种方法可能更清楚(在父亲身上):
public Child GetChildByName(string name) {...}
Run Code Online (Sandbox Code Playgroud)