0

あらゆる種類のパラメーターを使用してクラスインスタンスを呼び出すことができる別のライブラリを見つけました...

彼らはthis[int y, int z]フォーマットを使用しました。

複製しようとしましたが、C# Web サイトで何も見つかりません。

class xx
    {
        private int _y { get; private set; }
        private int _z { get; private set; }
        public xx this[int y, int z] { get; set; }
        public xx(int y, int z){
            _y = y;
            _z = z;
        }
    }


    xx z = new xx(1, 2);
    xx y = xx[1, 2];

this[options]この形式を使用する方法を理解しようとしています。(上記のコードは完全に間違っています)

毎回新しいインスタンスを確立する必要がなくなると、物事が簡単になります。

行く代わりに:

Column y = new Column(1, "value", "attributes;attribute;attribute");
FullTable.Add(y);

私はそれをできた:

FullTable.Column[1, "value", "attributes;attribute;attribute"]; // can get the instance or create it.

そしてそれはすでにインスタンス化されていて、すべてです。

とにかく、OOPの第一人者はこれをどのように行うでしょうか? 何かアイデアはありますか?

4

2 に答える 2

3

このthis[int x]構文はインデクサーと呼ばれます。これは、配列、リスト、および辞書で使用される種類のものを実装して、たとえばmyList[0]. コンストラクターとして使用することはできません。既に知っている通常のコンストラクター構文を使用する必要があります。

于 2013-10-25T19:46:12.453 に答える
3

これはインデクサーと呼ばれ、クラス内の項目を参照するために使用されます。

たとえば、DVD ムービー コレクションを整理するプログラムを書きたいとします。DVD ムービーを作成してコレクションに入れるためのコンストラクターを用意することもできますが、ID で DVD ムービーを「取得」すると便利です。これは、インデクサーで可能になります。

public class MovieCollection
{
    private Dictionary<string, Movie> movies = 
               new Dictionary<string, string>(); 
    private Dictionary<int, string> moviesById = 
               new Dictionary<int, string>();

    public MovieCollection()
    {

    }

    // Indexer to get movie by ID
    public Movie this[int index]  
    {
        string title = moviesById[index];
        return movies[title];
    }
}
于 2013-10-25T19:47:42.850 に答える