我最近开始使用C#开发一个项目,该项目要求用户根据需要创建尽可能多的类实例。我想过两种不同的方法来解决这个问题。
1:使用包含类所拥有信息的字符串数组列表。 我的意思是,当他们创建类的实例时,数据会转到列表中,以便我可以重复使用相同的变量名。
// Initiating the class
dataSet1D currDataSet = new dataSet1D();
dataSet1D.name = txtName.Text;
dataSet1.length = Int32.Parse(txtIndex.Text);
// Creating the list of arrays
List<string[]> arrayList = new List<string[]>();
string[] strArray = new string[2];
strArray[0] = "name";
strArray[1] = "lengthAsString";
arrayList.Add(strArray);
(这只是一些快速的模拟代码,我显然会在我的实际项目中使用更好的变量名称)
2:我可以使用动态命名的变量 如果他们输入他们想要的名称,我可以将实例命名为。
dataSet1D <dynamically named variable name> = new dataSet1D();
答案 0 :(得分:2)
您可以创建一个字典,将“变量”的名称映射到实际的calss实例,或者您可以创建一个包含所有实例的List,并且在这种情况下它们具有索引而不是名称。
答案 1 :(得分:0)
如果你需要很多1个类的实例,你可以拥有该类的列表。 像这样:
class MyClass
{
public string Name {set;get;}
// property2 , etc
}
var myList = new List<MyClass>();
myList.Add(new MyClass());
除此之外,我不得不提到变量名与运行时无关。在构建代码时,它们都将更改为指向包含数据的空间的指针。
变量名只是程序员让他们使用对象的处理程序
答案 2 :(得分:0)
您可以创建向该类添加字符串属性,该属性将保存用户为每个对象指定的名称。然后,在创建每个对象的新实例时,将其添加到List中,就像其他人建议的那样。最后,当您需要通过用户定义的名称访问实例时,请使用LINQ表达式来检索它。
public class MyClass
{
public string UserDefinedName { get; set; }
public int Length { get; set; }
... Other member variables
}
public List<MyClass> UserCreatedObjects { get; set;}
然后获取一个名为的实例,说&#34; my_object_1&#34;使用LINQ:
var theInstance = UserCreatedObjects.Where(o => o.UserDefinedName == "my_object_1").FirstOrDefault();