通过命名数组提供内部列表访问

Tim*_*ker 2 .net c#

我有一个类,其中包含其他对象的内部列表,如下所示:

public class Parent
{
    List<Child> _children;
}
Run Code Online (Sandbox Code Playgroud)

孩子说的看起来像这样:

public class Child
{
    public string Name;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是设置父级,其中可以访问_children的成员,如下所示:

...
Child kid = parentInstance["Billy"]; // would find a Child instance 
                                     // whose name value is Billy
...
Run Code Online (Sandbox Code Playgroud)

这可能吗?我显然可以这样做:

Child kid = parentInstance.GetChild("Billy");
Run Code Online (Sandbox Code Playgroud)

但我更喜欢数组/字典之类的语法.如果不是这样的话,这不是什么大不了的事,而且我不想为达到语法糖而跳过一百万圈.

Dar*_*rov 7

您可以为类定义索引属性Parent:

public class Parent
{
    List<Child> _children;

    public Child this[string name] 
    {
        get
        {
            return (_children ?? Enumerable.Empty<Child>())
                .Where(c => c.Name == name)
                .FirstOrDefault();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)