二维点列表存在多个问题

时间:2019-04-28 19:57:27

标签: c# list instantiation points

二维点列表存在多个问题。这些点是一系列直线的“到”和“从”点。

首先,此代码段来自List的声明。它是较大类TacLineStruct的一部分:

// The actual MST Spine
public List <Point> [,] MSTSpine 
{
    get;
    set;
}

public TacLineStruct(int arrayLength)
{
    GroupID = new int[arrayLength];
    this.EdgeList = new int[(arrayLength * arrayLength), 2];
    EdgeWeight = new float[arrayLength * arrayLength];
    GroupCenter = new Point[arrayLength];
    this.MSTSpine = new List<Point>[arrayLength,2];
}

接下来,这些分配会导致运行时错误:

Point tPoint1 = new Point((int)Army[TLS.EdgeList[i, 0]].Location.X, (int)Army[TLS.EdgeList[i, 0]].Location.Y);
Point tPoint2 = new Point((int)Army[TLS.EdgeList[i, 1]].Location.X, (int)Army[TLS.EdgeList[i, 1]].Location.Y);

TLS.MSTSpine[i,0].Add(tPoint1);
TLS.MSTSpine[i,1].Add(tPoint2);

最后,如何找到列表的计数?这不起作用:

for(int i = 0; i < TLS.MSTSpine[0,0].Count(); i++) 

我早些时候发布了一个问题,要求声明,实例化和引用匹配点列表的正确方法,但立即被否决了。我四处张望,但尚未在StackOverflow或任何我的手册中找到这个问题。

1 个答案:

答案 0 :(得分:2)

如果您声明一个var http = require('http'); var fs = require('fs'); http.createServer(function (req, res) { var url = req.url; if(url ==='/'){ fs.readFile(‘./index.html’, function(err, html) { if(err) throw err; res.writeHead(200, {'Content-Type': 'text/html'}); res.write(html); res.end(); }); } else if(url ==='/test.json'){ fs.readFile(‘./test.json’, function(err, json) { if(err) throw err; res.writeHead(200, {'Content-Type': 'text/json'}); res.write(json); res.end(); }); } else { res.write('404 Not Found'); res.end(); } }).listen(3000, function(){ console.info("Server started at port 3000"); }); 结构,那将使事情变得更容易:

Line

现在行列表可以声明为

public struct Line
{
    public Line(Point start, Point end)
    {
        Start = start;
        End = end;
    }

    public Point Start { get; }
    public Point End { get; }

    public override string ToString()
    {
        return String.Format($"({Start.X}, {Start.Y}) - ({End.X}, {End.Y})");
    }
}

并像这样使用

public List<Line> MSTSpine { get; } = new List<Line>();

我看到您还声明了一个var p1 = new Point(1, 2); var p2 = new Point(3, 4); var line = new Line(p1, p2); MSTSpine.Add(line); Console.WriteLine(MSTSpine[0].Start.X); Console.WriteLine(MSTSpine[0]); // Prints: (1, 2) - (3, 4) 数组。相反,我将weight属性添加到EdgeWeight结构中。