我对c#感兴趣。
我需要将数据存储在变量中,但我不确定最佳方法是什么?
例如,如果我创建对象:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
//Other properties, methods, events...
}
在代码中我可以定义例如
Person person1 = new Person("Leopold", 6);
但如果我有10000人,我必须定义所有人(person1,person2等)?我认为那不是个好主意。我可以使用数组或类似的东西,以及如何让那个人有名字利奥波德。什么是存储大量数据的最佳方法,并有良好的访问权限。 (例如,如果我可以使用像[somenumber] .name或类似的东西那样的话),那就好了。
对不起,再一次我是新来的......
日Thnx
答案 0 :(得分:2)
您可能正在寻找一个非常容易使用的通用列表。
List<Person> peopleList = new List<Person>();
peoplelist.Add(new Person("Leopold", 6));
如果你想要名叫leopold的人
Person leopold = peoplelist.FirstOrDefault(person => person.Name == "Leopold");
这是linq,所以你应该读一下.. 您的另一种选择是使用字典,它将为您提供您提到的索引查找。
答案 1 :(得分:1)
那么它取决于你需要什么,如果你有固定数量的记录你可以使用数组,但如果你不确定元素的数量,那么generic List将是我的选择。由于您无需处理List<T>
的大小,因此大小会自动由List维护,因为已添加或已删除元素。另一方面,arrays
已修复大小,当您必须存储更多 array 的大小的元素时,最终可能会创建新数组。
List<Person> personList = new List<Person>();
personList.Add(new Person("AnyName1", 7));
personList.Add (new Person("AnyName2", 4));
答案 2 :(得分:1)
您需要一个集合对象。列表是最通用的:
List<Person> people = new List<Person>();
然后您可以执行以下操作:
people.Add(new Person("Bob", 7));
people.Add(new Person("Alice", 4));
您可以在List上执行更多有用的操作。这是一个很好的教程:http://www.dotnetperls.com/list
答案 3 :(得分:1)
我对您的问题的建议:
List<Person> persons = new List<Person>
{
new Person("Leopold", 36),
new Person("Henry", 46),
new Person("Joe", 56),
new Person("Harrison", 66)
};
var findLeopold = persons.Find(p => p.Name == "Leopold"); // find Leopold in list
var firstPerson = persons[0]; // access by person[someNumber]
答案 4 :(得分:0)
如果可以确保永远不会超过某个边界,则只应使用数组。这通常仅适用于具有内部用途的代码。一组业务对象可以累积到任何大小,因此您希望使用列表。列表没有明确的边界,因为列表中的每个元素都包含对下一个元素的引用,这可以继续,直到列表内存不足。
也只对具有行为的类使用构造函数,这样的类只需要几个参数来初始化。仅用于携带数据的类可以包含任意数量的字段来描述某些内容,为每个字段传递参数很慢并且看起来不可读因此请使用此表示法:
new Person() { Name = "Leopold", Age = 21 };
由于所有属性都是可变的而没有验证,因此不需要使用属性而不是字段。所以你可能想要使用它:
public class Person
{
public string Name;
public int Age;
}
因为这个类代表一个真实的世界对象,所以我用PascalCase命名了这些字段,但是记得将camelCase用于任何其他类型的类。这只是代码约定的问题。
如果要在列表中查找项目,可以使用以下方法:
如果您需要更多电量,则需要Linq。