C#对象或数组

时间:2014-05-22 08:59:26

标签: c# arrays object

我对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

5 个答案:

答案 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用于任何其他类型的类。这只是代码约定的问题。

如果要在列表中查找项目,可以使用以下方法:

  • 查找
  • 的FindAll
  • 已存在

如果您需要更多电量,则需要Linq