1

私はC#とOpenTKを学び始めました(私はすでにJavaとC ++を知っています)。OpenTKが提供するデモコードでこのコード行に出くわしました。

if (Keyboard[Key.Escape])
            Exit();

Escボタンが押されている場合、Keyboard[Key.Escape]はtrueを返します。ただし、この構文はわかりません。キーボードはアレイではありません。この構文が何と呼ばれ、どのように機能するかを誰かに説明してもらえますか?参照へのリンクで十分です。お時間をいただきありがとうございます。

4

1 に答える 1

3

C# では、任意のオブジェクトが、ブラケット [] 構文を有効にするインデックス付きプロパティを実装できます。以下は単純な例です。従来の意味での配列ではないことは明らかですが、それでもインデクサー構文を使用できます。あなたの場合、プロパティはブール値のように見えます:

class Foo
{
    private string _foo; 

    public Foo(string foo)
    {
        _foo = foo; 
    }

    public bool this[string foo]  // the indexer can be anything
    {
        get                  // the getter can work however the programmer wants
        {
            return _foo == foo;
        }
    }
}

次のように使用できます。

        Foo f = new Foo("Hello World!");

        bool foo = f["Hello World!"]; // will return true
于 2011-07-08T04:18:17.647 に答える