c# – 对象集合的Object Initializer

我想知道是否有办法初始化List< T>其中T是一个对象,就像一个简单的集合被初始化?

Simple Collection Initializer:

List<int> digits = new List<int> { 0,1,2,3,4,5,6,7,8,9 };

Object Collection Initilizer:

List<Childobject> childobjects = new List<Childobject>
 {       
        new Childobject(){ Name = "Sylvester",Age=8 },new Childobject(){ Name = "Whiskers",Age=2 },new Childobject(){ Name = "Sasha",Age=14 }
 };

问题是,如何以及如果你能做这样的事情?

List<Childobject> childobjects = new List<Childobject>
 {       
       { "Sylvester",8},{"Whiskers",2},{"Sasha",14}
 };

解决方法

如果不创建自己从List< Childobject>派生的类,则不能这样做.根据李的回答.遗憾的是,扩展方法不考虑用于收集初始化器,否则这将起作用:
// This doesn't work,but it would if collection initializers checked
// extension methods.
using System;
using System.Collections.Generic;

public class Childobject
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static class Extensions
{
    public static void Add(this List<Childobject> children,string name,int age)
    {
        children.Add(new Childobject { Name = name,Age = age });
    }
}

class Test
{
    static void Main(string[] args)
    {
        List<Childobject> children = new List<Childobject>
        {
            { "Sylvester",8 },{ "Whiskers",2 },{ "Sasha",14 }
        };
    }
}

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么