我是编程的新手,所以这可能是一个愚蠢的问题,但我想知道你是否可以在方法中放置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(...);
。
任何建议都会有所帮助。
答案 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)
不是直接的,这是封装的重点。
你可以: