2011-07-08 8 views
1

C#とOpenTK(私はすでにJavaとC++を知っています)を学び始めました。私はOpenTKが提供するデモ・コードでのコード行に出くわした:ESCボタンが押されている場合OpenTKを使用したC#コード

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

キーボード[Key.Escape] trueを返します。しかし、私はこの構文を認識しません。キーボードは配列ではありません。誰でもこの構文が呼び出され、どのように動作するのかを私に説明することはできますか?参照へのリンクで十分です。あなたの時間をありがとう。

+0

! –

答えて

3

c#では、任意のオブジェクトがbracket []構文を有効にするインデックス付きプロパティを実装でき、ここで何が起こっているのですか。以下は簡単な例です - 明らかに、従来の意味での配列ではなく、インデクサー構文が利用可能です。

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; 
     } 
    } 
} 

ので、同じように使用することができます:プロパティはブール値であるように、あなたのケースでは、見えます。この概念は `Indexer`のみ呼ばれ

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

     bool foo = f["Hello World!"]; // will return true 
関連する問題