【问题标题】:Method that assigns a value to a variable in all classes in a list将值分配给列表中所有类中的变量的方法
【发布时间】:2019-02-04 20:38:00
【问题描述】:

我有一个班级列表。

例如:

public class Object()
{
    public string a;
    public string b;
}

public List<Object> Objects = new list<Object>();

我想要的是一个可以将List中每个Object中的字符串a设置为Object[0].a的方法;

我也想用一个方法对 b 和许多其他变量执行此操作。 (其他 var 类型,只有一种方法) 这可能吗?

【问题讨论】:

  • 如果你愿意,你可以为你的类 Object 创建一个默认的构造函数,但要在你的列表中包含一些东西,你需要添加一个。
  • 查看一些关于赋值(变量/字段/属性)和循环的教程。另外,除非您完全喜欢混淆自己,否则不要将您的类命名为“对象”。 (.NET 环境中已经存在另一个名为“Object”的类。)
  • 是的。反射。
  • 听起来像是 foreach 的工作。您可以遍历列表中的所有对象,并为每个对象设置属性。
  • 你会后悔把你的班级命名为Object。许多源代码文件以using System; 开头,System.Object 是 .NET Framework 中(几乎)所有类型的基类。我强烈建议选择另一个名字。

标签: c#


【解决方案1】:

假设您想要一个包含十个 Object(不幸命名)类实例的列表,并且您希望它们都将 a 属性设置为“Foo”。您可以使用Enumerable.Range 创建一个包含十个元素的枚举,然后使用Select 创建对象。创建对象时,可以使用initializer syntax 初始化a 属性。创建后,您可以使用ToList 创建列表。

从技术上讲,这是一行代码,但为了便于阅读,最好将它跨越几行可视化行。

List<Object> myList = Enumerable
    .Range(0,10)
    .Select
    (
        i => new Object { a = "Foo" }
    )
    .ToList();

【讨论】:

    猜你喜欢
    • 2017-10-27
    • 2021-06-23
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多