我知道C#很好,但它是一些奇怪的事情对我来说。 在一些旧的程序,我已经看到了这样的代码:
public MyType this[string name]
{
......some code that finally return instance of MyType
}
它是怎么叫什么名字? 有什么用的呢?
我知道C#很好,但它是一些奇怪的事情对我来说。 在一些旧的程序,我已经看到了这样的代码:
public MyType this[string name]
{
......some code that finally return instance of MyType
}
它是怎么叫什么名字? 有什么用的呢?
这是索引 。 当你宣布它,你可以这样做:
class MyClass
{
Dictionary<string, MyType> collection;
public MyType this[string name]
{
get { return collection[name]; }
set { collection[name] = value; }
}
}
// Getting data from indexer.
MyClass myClass = ...
MyType myType = myClass["myKey"];
// Setting data with indexer.
MyType anotherMyType = ...
myClass["myAnotherKey"] = anotherMyType;
这是一个索引属性 。 它可以让你直接“访问”类的指数,你会访问一个数组,列表,或字典一样。
在你的情况,你可以有这样的:
public class MyTypes
{
public MyType this[string name]
{
get {
switch(name) {
case "Type1":
return new MyType("Type1");
case "Type2":
return new MySubType();
// ...
}
}
}
}
那么你可以使用此类似:
MyTypes myTypes = new MyTypes();
MyType type = myTypes["Type1"];
这就是所谓的索引一个特殊的属性。 这允许你的类像一个数组访问。
myInstance[0] = val;
您可以在自定义集合最经常看到这种行为,作为数组的语法是可以通过键值来标识,通常它们的位置(如数组和列表)集合中的元素访问一个众所周知的接口或通过逻辑密钥(如在字典和哈希表)。
你可以找到更多关于在MSDN文章索引索引器(C#编程指南) 。
这是一个索引,通常用作集合类型的类。
看看使用索引器(C#编程指南) 。