我正在尝试理解我们今天在课堂上编写的一些代码,我们在下面创建了一个类,
class Datapoint
{
private string latitude;
private string longtitude;
private string elevation;
public Datapoint()
{
latitude = "no data";
longtitude = "no data";
elevation = "no data";
}
public Datapoint(string latitude, string longtitude, string elevation)
{
this.latitude = latitude;
this.longtitude = longtitude;
this.elevation = elevation;
}
public string Latitude { get { return latitude; } }
public string Longtitude { get { return longtitude; } }
public string Elevation { get { return elevation; } }
}
然后从这个班级列出一个列表,
List<Datapoint> datapoints;
这是一个列表
latitude
longtitude
elevation
latitude
longtitude
elevation
latitude
longtitude
elevation
latitude
longtitude
elevation
依旧等等?谢谢你的帮助。
答案 0 :(得分:2)
该列表存储Datapoint
个对象。它没有纬度,经度,海拔等的顺序。您可以从列表中获取Datapoint
对象,然后按照您选择的顺序获取纬度,经度,海拔:
Datapoint myPoint = datapoints[0];
Console.WriteLine(myPoint.latitude);
//etc for which ever measurement you want
答案 1 :(得分:2)
您似乎将Datapoint
类视为本身一种列表结构。虽然你可以以这种方式思考它,但这并不是大多数程序员想象它的方式。
更容易理解的实体可能是一个人。你是否认为一个人是列表,就像这样?
......等等?我想不是。一个人有许多属性或属性;但是如果你考虑一个人的列表,这个列表不仅仅是人物属性的连接序列,而是个人实体(或实例)。
正如其他人所指出的那样,List<Datapoint>
或Datapoint
个对象列表不仅仅是这些对象属性的列表,而且实际上是对象本身的列表(每个对象)其中有属性)。
在较低级别,如果您询问存储这些信息的方式,那么您实际上已经关闭了。显然,对于要在内存中分配的Datapoint
对象,必须有所有属性的空间;这些很可能会被分配到一个连续的块中(虽然此时我们已达到一定程度的实现细节,大多数开发人员认为你甚至不应该考虑编写软件的目的 - 这是另一个讨论我会除了别人!)。
现在,您可能会认为存储一个Datapoint
对象列表是有意义的,就像您建议的那样:
latitude // first object
longitude
elevation
latitude // second object
longitude
elevation
... // etc.
但是,正如您可能已经在课堂上学到的那样,引用类型不会以这种方式存储在.NET中。给定一组对象,每个实例可以存储在任何地方;你在List<Datapoint>
中拥有的实际上是对这些对象的一堆引用,就像我有这个列表一样:
......这些地址的建筑物不需要实际上彼此相邻。
希望这有助于您了解List<Datapoint>
实际上是什么:对象的引用列表,它具有属性但传统上不被视为列表本身(尽管在某种意义上它们是),并且可能被分配并存在于记忆中的非相邻点。
答案 2 :(得分:0)
此列表将包含一组数据点。此集合中的数据点将包含公共属性Latitude,Longitude和Elevation。
答案 3 :(得分:0)
这是您的DataPoints对象的列表。因此,如果您想获取每个属性,您将首先访问列表中的对象。类似的东西:
foreach(DataPoint dp in datapoints)
{
//do something with dp.Latitude
//do something with dp.Longitude
//do something with dp.Elevation
}
答案 4 :(得分:0)
List<Datapoint> datapoints;
此行初始化List,但实际上不会将项目放在其中。然后,您需要从默认构造函数或自定义构造函数向此列表中添加项。这样的事情。
Datapoint thePointToBeInserted = new Datapoint(): //this will cause it to create a Datapoint where the three properties are "no data".
theListOfDataPoints.Add(thePointToBeInserted); //we add the object to the list.
theListofDataPoints.Add(new DataPoint("Example latitude", "etc", "etc")); //adding with custom constructor.