Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 简化的集合初始化_C#_Collections_Initialization - Fatal编程技术网

C# 简化的集合初始化

C# 简化的集合初始化,c#,collections,initialization,C#,Collections,Initialization,初始化WF4活动时,我们可以执行以下操作: Sequence s = new Sequence() { Activities = { new If() ..., new WriteLine() ..., } } 请注意,Sequence.Activities是一个集合,但它可以在没有新集合的情况下初始化() 如何在我的集合属性上模拟此行为?任何具有Add()方法并实现IEnumerable的集合都可以这样初始化。有关详细信息,请参阅。(缺少新的集

初始化WF4活动时,我们可以执行以下操作:

Sequence s = new Sequence()
{
    Activities = {
        new If() ...,
        new WriteLine() ...,
    }
}
请注意,
Sequence.Activities
是一个
集合
,但它可以在没有新集合的情况下初始化()


如何在我的
集合
属性上模拟此行为?

任何具有
Add()
方法并实现
IEnumerable
的集合都可以这样初始化。有关详细信息,请参阅。(缺少新的
集合
调用是由于对象初始值设定项,而内联添加项的能力是由于集合初始值设定项。)

编译器将使用集合初始化块中的项自动调用类上的
Add()
方法


作为一个示例,下面是一段非常简单的代码来演示:

using System;
using System.Collections.ObjectModel;

class Test
{
    public Test()
    {
        this.Collection = new Collection<int>();
    }

    public Collection<int> Collection { get; private set; }

    public static void Main()
    {

        // Note the use of collection intializers here...
        Test test = new Test
            {
                Collection = { 3, 4, 5 }
            };


        foreach (var i in test.Collection)
        {
            Console.WriteLine(i);
        }

        Console.WriteLine("Press any key to exit...");
        Console.ReadKey();
    }  
}
使用系统;
使用System.Collections.ObjectModel;
课堂测试
{
公开考试()
{
this.Collection=新集合();
}
公共集合{get;private set;}
公共静态void Main()
{
//请注意此处集合初始化器的使用。。。
测试=新测试
{
集合={3,4,5}
};
foreach(test.Collection中的变量i)
{
控制台写入线(i);
}
Console.WriteLine(“按任意键退出…”);
Console.ReadKey();
}  
}

。。。它实现了IEnumerable:)@Jon:非常正确-我编辑得更加明确。(我倾向于总是在“集合”上实现IEnumerable,但这并不是一个要求;))是的,但我的集合使用的是
System.Collections.ObjectModel.collection
,它已经实现了IEnumerable,并且有一个Add()方法。事实是,它没有给出任何编译错误,但在遍历它时它似乎是空的。此外,您给出的链接并没有举例说明这种类型的初始化。@Jota:实际上,正是这个链接显示了它是如何工作的。我只是提供了一些工作示例代码来演示。尝试上面的程序-它使用带有
collection
的集合初始值设定项来精确处理此场景。