简化集合初始化

发布于 2024-11-03 17:51:51 字数 355 浏览 0 评论 0原文

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

Sequence s = new Sequence()
{
    Activities = {
        new If() ...,
        new WriteLine() ...,
    }
}

请注意,Sequence.Activities 是一个 Collection,但无需使用新的 Collection() 即可对其进行初始化

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

While initializing WF4 activities we can do something like this:

Sequence s = new Sequence()
{
    Activities = {
        new If() ...,
        new WriteLine() ...,
    }
}

Note that Sequence.Activities is a Collection<Activity> but it can be initialized without the new Collection().

How can I emulate this behaviour on my Collection<T> properties?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月打碎记忆 2024-11-10 17:51:51

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

编译器将自动调用 类上的 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();
    }  
}

Any collection that has an Add() method and implements IEnumerable can be initialized this way. For details, refer to Object and Collection Initializers for C#. (The lack of the new Collection<T> call is due to an object initializer, and the ability to add the items inline is due to the collection initializer.)

The compiler will automatically call the Add() method on your class with the items within the collection initialization block.


As an example, here is a very simple piece of code to demonstrate:

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();
    }  
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文