【问题标题】:Issue On Creating Array of Object in Another Class在另一个类中创建对象数组的问题
【发布时间】:2017-04-20 21:16:40
【问题描述】:

我正在尝试从 Employee 类中的 Person 对象创建一个对象数组,但出现以下错误:

CS0270 不能在变量声明中指定数组大小(尝试 用“新”表达式初始化)

CS1519 无效的令牌 '.'在 类、结构或接口成员声明 CS1519

令牌无效 类、结构或接口成员声明中的“=”

    void Main()
    {

    }

    public class Person{
        public string Name{ get; set;}
    }
    public class Employee{
        Person[] persons = new Person[3];
        persons[0].Name = "Ali";
    }

你能告诉我我做错了什么吗?

【问题讨论】:

  • persons[0].Name = "Ali"; 需要在方法中
  • 谢谢琼斯波利斯,但我能问你为什么吗?
  • @Behseini,这就是 c# 的设计方式。相反,假设是 PHP,你必须以某种方式组织你的代码。

标签: c#


【解决方案1】:

无法通过这种方式为persons 数组的第一个元素赋值。您必须在方法或构造函数中执行此操作。像这样的:

public class Employee
{
    Person[] persons = new Person[3];

    //through constructor
    public Employee()
    {
        persons[0].Name = "Ali";
    }

    //method that takes index and name
    public void AddPerson(int index, string name)
    {
        persons[index].Name = name;
    }
}

【讨论】:

  • +1 但该函数没有任何东西可以阻止用户输入高于数组可以支持的索引。
  • 非常感谢 Nino,但能否请您告诉我这背后的逻辑是什么?
  • @JohnOdom 确实如此,但这只是一个示例,显示了基本用法。
  • @Behseini 查看解释classes and structs的文档
  • @Behseini,检查索引并与数组长度进行比较
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 2014-07-23
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多