0

以下のクラスを作成したクラスで、今日行ったコードを理解しようとしています。

    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

などなど?助けてくれてありがとう。

4

5 に答える 5

2

Datapointクラス自体を一種のリスト構造と考えているようです。このように考えることができますが、ほとんどのプログラマーはそれを視覚化する方法ではありません。

理解しやすい実体は人かもしれません。このように、人をリストだと思いますか?

  • 性別
  • 身長
  • 重さ
  • 髪の色
  • 目の色

...等々?ないと思います。人には多くの属性またはプロパティがあります。しかし、人々のリストを考えてみると、このリストは単なる個人プロパティの連結シーケンスではなく、個人エンティティ (またはインスタンス) です。

したがって、他の人が指摘したようにList<Datapoint>、またはDatapointオブジェクトのリストは、単にこれらのオブジェクトのプロパティのリストではなく、実際にはオブジェクト自体のリストです (それぞれにプロパティがあります)。


下位レベルでは、この情報がどのように保存されているかを尋ねている場合、実際には近いです。当然のことながら、Datapointオブジェクトをメモリに割り当てるには、そのすべてのプロパティ用のスペースが必要です。そして、これらは連続したブロックに割り当てられる可能性が高いです (ただし、この時点で、ほとんどの開発者がソフトウェアを作成する目的で考える必要さえないと主張するレベルの実装の詳細に達しています。これは、別の議論です)。他の人のために保存してください!)。

したがって、あなたが提案したのと同じようにオブジェクトのリストを保存することは理にかなっていると思うかもしれません:Datapoint

latitude  // first object
longitude
elevation
latitude  // second object
longitude
elevation
...       // etc.

ただし、既に授業で学んだことがあるかもしれませんが、参照型は .NET ではこの方法で格納されません。オブジェクトのコレクションが与えられると、各インスタンスはどこにでも格納できます。あなたが持っているのは、実際にはこれらのオブジェクトへの参照List<Datapoint>の束です。これは、次のリストがある場合とほぼ同じです。

  • 123メインストリート
  • 456 ブロード ストリート
  • 789チェスナットストリート

...これらの住所にある建物は、実際に隣接している必要はありません。

これが実際に が何であるかを理解するのに役立つことを願っていますList<Datapoint>: オブジェクトへの参照のリストで、プロパティを持ちますが、伝統的にリスト自体とは考えられていません (ある意味ではそうですが)。メモリ内のポイント。

于 2012-12-13T18:46:15.577 に答える
2

リストにはDatapointオブジェクトが格納されます。緯度、経度、標高などの順序はありません。Datapointリストからオブジェクトを取得し、次のように選択した順序で緯度、経度、標高を取得できます。

Datapoint myPoint = datapoints[0];
Console.WriteLine(myPoint.latitude);
//etc for which ever measurement you want
于 2012-12-13T18:42:52.977 に答える
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.
于 2012-12-13T18:50:57.380 に答える
0

これは DataPoints オブジェクトのリストです。したがって、それぞれのプロパティを取得したい場合は、最初にリスト内のオブジェクトにアクセスします。何かのようなもの:

foreach(DataPoint dp in datapoints)
{
    //do something with dp.Latitude
    //do something with dp.Longitude
    //do something with dp.Elevation
}
于 2012-12-13T18:44:08.963 に答える
0

このリストには、データポイントのコレクションが含まれます。このコレクションのデータポイントには、緯度、経度、標高のパブリック プロパティが含まれます。

于 2012-12-13T18:40:57.093 に答える