使用OpenTK的C#代码

使用OpenTK的C#代码,c#,opentk,C#,Opentk,我刚开始学习C#和OpenTK(我已经知道Java和C++)。我在OpenTK提供的演示代码中遇到了这行代码: if (Keyboard[Key.Escape]) Exit(); 如果按下Esc按钮,键盘[Key.Escape]将返回true。但是,我不认识这种语法。键盘不是数组。有人能给我解释一下这个语法叫什么,它是如何工作的吗?链接到参考就足够了。谢谢您的时间。在c#中,任何对象都可以实现一个索引属性,启用方括号[]语法,这就是这里要做的。下面是一个简单的例子——虽

我刚开始学习C#和OpenTK(我已经知道Java和C++)。我在OpenTK提供的演示代码中遇到了这行代码:

if (Keyboard[Key.Escape])
            Exit();
如果按下Esc按钮,键盘[Key.Escape]将返回true。但是,我不认识这种语法。键盘不是数组。有人能给我解释一下这个语法叫什么,它是如何工作的吗?链接到参考就足够了。谢谢您的时间。

在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

此概念仅称为
索引器
!!!