如何访问对象数组中的对象实例?

1 c#

我试图访问一个对象数组的成员,这可能吗?

我已经声明了一个名为Particle的结构,并初始化了一个约为40个粒子的"粒子"对象数组,现在我需要访问每个粒子,例如:particle.Gbest任何人都可以帮忙吗?

这是我的代码:

struct particle
{
    double[] position = new double[100];
    double Gbest, Lbest;
    double Pconst = 0.5;
}

object[] swarm = new object[swarm_size];

for (int i = 0; i < swarm_size; i++)
{
    swarm[i] = new particle();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

此代码无效,以:

struct particle
{
    double[] position = new double[100];
}
Run Code Online (Sandbox Code Playgroud)

您不能在结构中为实例变量指定变量初始值设定项.

但是,访问另一个对象或值中的数据很容易 - 如果可以访问的话.在这种情况下,您的字段是私有的,并且您没有提供任何访问方法或属性,因此如果没有更多代码,您将无法"从外部"获取它们.

这是一些修改过的代码:

public class Particle
{
    private readonly double[] positions = new double[100];

    // TODO: Rename these to something useful
    public double Gbest { get; private set; }
    private double Lbest;
    private double Pconst = 0.5;

    public Particle(int g)
    {
        Gbest = g; // Or whatever
    }
}


List<Particle> swarm = new List<Particle>();
for (int i = 0; i < swarmSize; i++)
{
    swarm.Add(new Particle(i));
}

double total = 0;
foreach (Particle particle in swarm)
{
    total += particle.Gbest;
}
Run Code Online (Sandbox Code Playgroud)

现在这没有做任何特别有用的事情,因为你不清楚你想要做什么 - 但我建议你得到一本关于C#的入门书.Stack Overflow非常适合具体的问题,但我认为你在C#的旅程中已经足够早,一本好的书或教程可以帮助你.