【问题标题】:How to pass List<string> to constructor in c#如何将 List<string> 传递给 c# 中的构造函数
【发布时间】:2013-05-13 08:53:08
【问题描述】:

如何将 List 传递给构造函数

我是这样尝试的

 private void button1_Click(object sender, EventArgs e)
    {
        step2 st2 = new step2(list);
    }    

但是在构造函数定义中要写什么

 public step2()
    {
        InitializeComponent();
    }

欢迎提出建议

【问题讨论】:

  • 改成public step2(List&lt;string&gt; list)
  • 但是你想在构造函数中用这个列表做什么?

标签: c# .net list


【解决方案1】:

你需要在构造函数中定义一个参数。例如。

 public step2(List<Type> list) 
 {

 }

Type 是您的列表类型,即List&lt;string&gt;

【讨论】:

    【解决方案2】:

    就这么简单

    public step2(List<string> list)
    {
        InitializeComponent();
    }
    

    我强烈推荐阅读一本关于 c# 基础的书

    【讨论】:

      【解决方案3】:

      您需要为采用List&lt;T&gt;step2 类型提供构造函数

      public step2()
      {
          InitializeComponent();
      }
      

      应该是:

      public step2(List<T> list)
      {
          //Do something with list
          InitializeComponent();
      }
      

      Constructors C# Programming guide 应该会派上用场

      【讨论】:

        【解决方案4】:

        基本上:

        public step2(List<Type> list) {
        
        }
        

        但好的做法是将IList 设置为参数类型。

        public step2(IList<Type> list) {
        
        }
        

        您可以阅读there 关于传递接口而不是对象的信息。

        【讨论】:

          【解决方案5】:

          您需要将 List 或 List 继承自的任何类/接口传递给构造函数。例如 IList 也会很好。

          public step2(List<T> list){ }
          
          
          public step2(IList<T> list){ }
          

          T 是一个类型。

          【讨论】:

            【解决方案6】:

            你甚至可以这样做:

            public step2(List<T> list){}
            

            将该函数用作所有列表项的通用函数:)

            【讨论】:

              【解决方案7】:

              这应该是你的类构造函数来容纳 List:

              public step2(List<T> list)
              {
                  InitializeComponent();
              }
              

              你可以这样调用这个类:

              List<string> myList = new List<string>();  // You can choose your own data type.
              step2 obj = new step2(myList); 
              

              【讨论】:

                【解决方案8】:
                public class A
                
                    {
                    List<string> listParam1 = new List<string>();
                
                    public A(List<string> ListParam)
                    {
                        listParam1 = ListParam;
                    }
                
                }
                

                这就是参数化构造函数的样子。

                你可以如下初始化它:

                    List<string> param = new List<string>();
                    param.Add("One");
                    param.Add("Two");
                    A obj = new A(param);
                

                如果这有帮助,请告诉我。

                【讨论】:

                  【解决方案9】:

                  答案可能取决于 step2 继承自哪个类或您如何使用它。换句话说 - 如果你的类 step2 需要一个默认构造函数,你应该替换构造函数,而是添加另一个:

                  public step2()
                  {
                      InitializeComponent();
                  }
                  
                  public step2(IList<String> stringList) : this()
                  {
                      // do something with stringList
                  }
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2015-05-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-11-20
                    • 2018-05-09
                    • 2016-01-30
                    • 1970-01-01
                    相关资源
                    最近更新 更多