你可以调用List(T)放在另一个方法里面,如何启动List(T)?

时间:2012-01-17 09:35:12

标签: c# visual-studio-2010 .net-4.0

我是编程的新手,所以这可能是一个愚蠢的问题,但我想知道你是否可以在方法中放置List<T>并访问它并从该方法外部编辑它?

如何实例化List<T>类以便能够从另一个类访问和编辑它?也许我甚至无法以这种方式实例化列表。

这是我的代码,其中包含列表的启动:

public void MyMethod()
{
    List<Customer> newCustomer = new List<Customer>
    { 
       new Customer
       {
           Name="A",                   //Name and Telephone are properties.
           Telephone="02-333444"
       },
       new Customer
       {
            Name="B",
            Telephone="03-444555"
       },
       new Customer
       {
           Name="D",
           Telephone="03-444555"
       },
    };
}

如果我想从此方法外部访问和添加或删除列表中的项目,我该怎么办?我尝试了几件事,真的可以使用一些建议吗?例如;我想在代码中的其他地方使用newCustomer.Add(...);

任何建议都会有所帮助。

7 个答案:

答案 0 :(得分:8)

您可以返回从方法创建的列表:

public List<Customer> MyMethod() 
{

    List<Customer> newCustomer = new List<Customer>
    { 
       new Customer
       {
       Name="A",                   //Name and Telephone are properties.
       Telephone="02-333444"
       },

       new Customer
       {
       Name="B",
       Telephone="03-444555"
       },
       new Customer
       {      

       Name="D",
       Telephone="03-444555"
       },

    };

    return newCustomer;
}

请注意,我将返回类型从void更改为List<Customer>,然后在函数末尾返回生成的列表(return newCustomer)。

当您从其他地方调用方法时,您将能够获得如下所返回的列表:

List<Customer> customerList = MyMethod();

或者如果在课外:

MyClass instanceOfClass = new MyClass();
List<Customer> customerList = instanceOfClass .MyMethod();

这是编程的基础,我认为在深入研究开发之前,你应该阅读一些核心原则。

答案 1 :(得分:2)

@ThePower答案是正确答案 无论如何,您可以使用不同的解决方案:在您的类中定义该变量,以便从该类中的每个方法访问它:

public class Foo 
{
    private List<Customer> newCustomer = new List<Customer>();
    public void MyMethod() 
    {
        newCustomer.Add(...); 
    }
}

public class Foo 
{
    private List<Customer> newCustomer = null;
    public Foo()
    {
        newCustomer = new List<Customer>
        { 
                  new Customer
                  {
                        Name="A",                   //Name and Telephone are properties.
                      Telephone="02-333444"
                  },
                  new Customer
                  {
                        Name="B",
                        Telephone="03-444555"
                  },
                  new Customer
                  {
                        Name="D",
                      Telephone="03-444555"
                  },
             };
    }
    public void MyMethod() 
    {
        newCustomer.Add(...); 
    }
}

答案 2 :(得分:1)

您需要允许其他一些代码访问List<T>对象的引用。您可以将其作为类中的属性公开,也可以从方法中返回它。通过后一个选项并使用上面的示例,您可以将方法更改为:

public List<Customer> MyMethod()
{
    List<Customer> newCustomer = new List<Customer>
    { 
           new Customer
           {
           Name="A",                   //Name and Telephone are properties.
           Telephone="02-333444"
           },

           new Customer
           {
           Name="B",
           Telephone="03-444555"
           },
           new Customer
           {
           Name="D",
           Telephone="03-444555"
           },
    };

    return newCustomer;
}

然后您可以使用以下方式访问它:

// ... some other code ...

// SomeClass contains the MyMethod()
var someClass = new SomeClass();

List<Customer> customers = someClass.MyMethod();
customers.Add(new Customer());

答案 3 :(得分:1)

您必须从方法中返回List:

public List<Customer> MyMethod() {
    List<Customer> newCustomer = new List<Customer>
    { 
        new Customer
        {
            Name="A",                   //Name and Telephone are properties.
           Telephone="02-333444"
        },
        new Customer
        {
            Name="B",
            Telephone="03-444555"
        },
        new Customer
        {
            Name="D",
           Telephone="03-444555"
        },
    };
    return newCustomer;
}

现在,从此方法外部,您可以执行以下操作来访问您的列表:

List<Customer> customers = MyMethod();

答案 4 :(得分:1)

您需要将列表存储在方法之外的某个位置(通常在您的类的字段中)

class MyClass
{
    private List<Customer> _customers = CreateCustomerList();

    public List<Customer> CreateCustomerList()
    {

        List<Customer> newCustomer = new List<Customer>
        { 
           new Customer
           {
           Name="A",                   //Name and Telephone are properties.
           Telephone="02-333444"
           },

           new Customer
           {
           Name="B",
           Telephone="03-444555"
           },
           new Customer
           {
           Name="D",
           Telephone="03-444555"
           },

        };
    }

    public void AddCustomer(Customer customer)
    {
        _customers.Add(customer);
    }

}

答案 5 :(得分:1)

您可以从方法中返回新的客户列表:

public List<Customer> MyMethod()
{

    List<Customer> newCustomer = new List<Customer>

    { 
       new Customer
       {
           Name="A",                   //Name and Telephone are properties.
           Telephone="02-333444"
       },

       new Customer
       {
           Name="B",
           Telephone="03-444555"
       },
       new Customer
       {
           Name="D",
           Telephone="03-444555"
       }
    };

    return newCustomer;
}

然后用以下方法调用方法:

List<Customer> myList = MyMethod();

然后,您可以在父对象中访问它,并能够将其作为参数传递给其他方法。如果您希望谷歌有关该主题的更多信息,那么在代码中可用,创建和销毁的变量的一般主题称为“范围”。

答案 6 :(得分:0)

不是直接的,这是封装的重点。

你可以:

  1. 在方法中设置方法之外的变量。
  2. 返回列表。
  3. 将列表传递给方法调用的另一个方法。
  4. 让代表捕获列表。