【问题标题】:Array of objects - modyfing object's fields C#对象数组 - 修改对象的字段 C#
【发布时间】:2014-09-16 09:31:18
【问题描述】:

我遇到了这样的问题。我是 C# 的初学者。 我有一个对象数组(各种类),并且在应用程序的一个地方我想修改年龄或姓名等字段。建设

static Object[] prac = new Object[10];
public static void Main(string[] args)
{
    prac[0].age = 21;
}

报错

“object”不包含“age”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“age”

我认为这将类似于 Java 代码,但事实并非如此。我究竟做错了什么?

问候。

【问题讨论】:

  • 我认为这段代码在 Java 中也不起作用,可能你的意思是 javascript(这是一种动态语言),你需要从 Object 转换为你需要的类...
  • 尽量不要听起来居高临下,但我认为你需要去学习 c# 教程
  • 噢,我犯了一个错误。这是Person[] prac = new Person[10]

标签: c# arrays object


【解决方案1】:

您需要将您的成员转换为包含年龄的类类型。我只是假设您的班级名称是 Person 并且有一个 age 成员:

static Object[] prac = new Object[10];
public static void Main(string[] args)
{
    ((Person)prac[0]).age = 21;
}

需要注意的是括号:(Person)prac[0] 是铸件,您将Object prac[0] 铸件为Person 对象。外部括号((Person)prac[0]) 在那里,因此代码被视为Person 对象,而不是常规的Object

【讨论】:

  • 是的,就是这样!我的数组类型应该是Person...谢谢。
【解决方案2】:

首先,您需要将对象转换为您打算使用的类型。

如果您使用类型object,它只有有限数量的属性和方法。要使用属性age,您首先需要将其转换为具有该属性的相应类型。比如这样的:

static Object[] prac = new Object[10];
public static void Main(string[] args)
{
    SpecificType myObject = prac[0] as SpecificType; // returns null if not successful
    if (myObject != null)
        myObject.age = 21;
}

但是,我不相信您在这里做的事情是正确的。我个人会避免输入object,除非绝对没有其他方法可以这样做(这在我的代码中非常罕见)。 C# 是一种强类型语言,使用 object 很容易出错。

【讨论】:

    【解决方案3】:

    Object 没有属性ageObject 的所有属性和方法are stated here

    【讨论】:

      【解决方案4】:

      这是一个 objects 的数组,正如错误消息所暗示的,'object' 不包含 'age' 的定义

      您需要使用具有age 字段或属性的类型声明您的数组。您可以随意修改它。例如:

      class Person 
      {
          public string Name { get; set; }
      }
      

      【讨论】:

        【解决方案5】:

        您必须使用您的类的数组,而不是 Object,这是所有类的基本类型。

        static MyClass[] prac = new MyClass[10];
        

        或者你必须投射它:

        MyClass mc = (MyClass) prac[0];
        mc.age = 21;
        

        【讨论】:

          【解决方案6】:

          Object 是 .Net 中所有类的基类。

          只需将所需的值转换为所需的类型类。或者使用正确的类型而不是对象创建一个列表。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-05-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-05-03
            • 2020-01-12
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多