为了账号安全,请及时绑定邮箱和手机立即绑定

C#中的方法链

C#中的方法链

C#
MMMHUHU 2019-10-09 15:41:22
我实际上不知道在C#中这叫什么。但是我想向我的班级添加功能,以同时添加多个项目。myObj.AddItem(mItem).AddItem(mItem2).AddItem(mItem3);
查看完整描述

3 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您提到的技术称为可链接方法。在C#中创建DSL或流畅接口时,通常使用它。


典型的模式是让您的AddItem()方法返回其所属的类(或接口)的实例。这样可以将后续调用链接到该链接。


public MyCollection AddItem( MyItem item )

{

   // internal logic...


   return this;

}

用于将项目添加到集合的方法链接的一些替代方法包括:


使用params语法允许将多个项目作为数组传递到您的方法。当您想隐藏数组创建并为方法提供变量参数语法时很有用:


public void AddItems( params MyItem[] items )

{

    foreach( var item in items )

        m_innerCollection.Add( item );

}


// can be called with any number of arguments...

coll.AddItems( first, second, third );

coll.AddItems( first, second, third, fourth, fifth );

提供IEnumerable或IEnumerable类型的重载,以便可以将多个项目一起传递给您的集合类。


public void AddItems( IEnumerable<MyClass> items )

{

    foreach( var item in items )

         m_innerCollection.Add( item );

}

使用.NET 3.5集合初始化器语法。您的类必须提供单个参数Add( item )方法,实现IEnumerable,并且必须具有默认构造函数(或者您必须在初始化语句中调用特定的构造函数)。然后您可以编写:


var myColl = new MyCollection { first, second, third, ... };


查看完整回答
反对 回复 2019-10-09
?
PIPIONE

TA贡献1829条经验 获得超9个赞

使用这个技巧:


public class MyClass

{

    private List<MyItem> _Items = new List<MyItem> ();


    public MyClass AddItem (MyItem item)

    {

        // Add the object

        if (item != null)

            _Items.Add (item)


        return this;

    }

}

它返回当前实例,该实例将允许您链接方法调用(从而“同时”添加多个对象)。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信