gpt4 book ai didi

c# - 从 C# 中的列表访问对象参数

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:22 25 4
gpt4 key购买 nike

我正在创建一个包含许多不同参数的代理对象列表,但我不确定如何使用循环访问我所有对象的特定参数......我正在寻找什么要做的是从我的所有代理处获取所有 Point3d 位置。我该怎么做?

// Define Agent class
class Agent
{
Point3d Pos = new Point3d();
Vector3d Vec = new Vector3d();
int Alignment;
double Separation;
double Cohesion;
double NeighborRadius;

public Agent(Point3d pos, Vector3d vec, int alignment, double separation, double cohesion, double neighborRadius)
{
Pos = pos;
Vec = vec;
Alignment = alignment;
Separation = separation;
Cohesion = cohesion;
NeighborRadius = neighborRadius;
}
}

protected override void SolveInstance(IGH_DataAccess DA)
{
// Initialize Agents
for (int i = 0; i < agents; i++)
{
double xPos = RandomfromDouble(0.0, boundx);
double yPos = RandomfromDouble(0.0, boundy);
double zPos = RandomfromDouble(0.0, boundz);

Point3d pos = new Point3d(xPos, yPos, zPos); // Create Agent Start Position
Vector3d vec = new Vector3d(xPos + 1, yPos, zPos); // Create Agent Start Vector

Agent agent = new Agent(pos, vec, alignment, separation, cohesion, neighborRadius);
allAgents.Add(agent);
agentPositions.Add(pos);
}
}

最佳答案

如果您可以更改 Pos 的访问修饰符:

class Agent
{
public Point3d Pos = new Point3d();
//.
//.
//.
}

class Agent
{
public Agent()
{
Pos = new Point3d();
}
public Point3d Pos { get;private set; }
//.
//.
//.
}

List<Agent> allAgents = new List<Agent>();
List<Point3d> agentPositions = new List<Point3d>();

// Initialize Agents
//.
//.
//.


agentPositions = allAgents
.Select(agent => agent.Pos)
.ToList();

注意:Linq 可从 .Net Framework 3.5 获得

关于c# - 从 C# 中的列表访问对象参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53039352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com