我刚开始学习C#和OpenTK(我已经了解Java和C ++)。我在OpenTK提供的演示代码中遇到了这行代码:
if (Keyboard[Key.Escape])
Exit();
如果按下Esc按钮,键盘[Key.Escape]将返回true。但是,我不认识这种语法。键盘不是数组。任何人都可以向我解释这个语法是什么以及它是如何工作的?链接参考就足够了。谢谢你的时间。
答案 0 :(得分: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