c# - 我们可以使用通用列表而不是对象数组 C#

标签 c# arrays generics generic-list

class Student
{
  public string ID { get; set; }
  public string Name { get; set; }
}

Student[] students = new Student[10];
int j = 0;

for(int i=0; i < 100; i++)
{
  if (some condition)
  {
    student[j].ID = anotherIDlist[i]; //some value from another list;
    student[j].Name = anotherNamelist[i]; //some value from another list;
    j++;
  }
}

这里不知道数组长度。需要它动态取决于总条件是否为真。使用通用列表是否有任何有效的方法来做同样的事情?如果可以,怎么做?

最佳答案

您的编码风格合理且常见,但请注意它是多么迫切。你是说“绕过这个循环,改变这个集合,改变这个变量”,构建机器来做你想做的事。如果可以选择,我更喜欢以声明式 风格编写代码,并让编译器为我构建机器。我倾向于这样写你的程序:

var query = from i in Enumerable.Range(0, 100)
            where some_condition
            select new Student() { Id = ids[i], Name = names[i] };
var students = query.ToList();

让编译器担心循环和变量等等;您可以专注于语义而不是机制。

关于c# - 我们可以使用通用列表而不是对象数组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554845/

相关文章:

c# - 避免从基类继承所有东西

c# - .NET 连接器只返回第一条记录

php - 如何将从查询返回的值数组转换为逗号分隔值

c - 大小未知的可变长度数组

java - 使用泛型链接任务

ios - 如何编写一个将字符串和泛型类型作为参数的函数?

c# - 为什么 TweetSharp 抛出异常?

c# - 如果文本框为空,此代码返回日期 1-1-0001 ...我希望它返回空或空字符串,那么我该怎么办?

javascript - 获取对象数组中的特定元素

generics - Kotlin - 不尊重泛型类型参数