索引器获取和设置不同的类型
本文关键字:类型 设置 获取 索引 | 更新日期: 2023-09-27 18:31:36
我在 C# 中使用索引器时遇到问题。作为要求,我必须实现索引器。此索引器必须接受值(设置)泛型类型<T>
并返回 (get) 类型MyClass<T>
。
例:
class OtherClass<T>{
Dictionary<string, MyClass<T>> dict;
//...
}
class MyClass<T>{
T item;
//...
public void MethodFromMyClass(){
//...
}
}
MyClass<String> mc = new MyClass<String>();
mc["Name"] = "Data";
//Call method from MyClass
mc["Name"].MethodFromMyClass()
例如,我尝试了很多东西。 public object this[string i] ...
,但没有一个产生预期的结果。感谢您的任何帮助。
隐式运算符可以帮到你。首先,我们应该定义MyClass
的隐式运算符:
public class MyClass<T>
{
private readonly T item;
public MyClass(T item)
{
this.item = item;
}
public void PrintItem()
{
Console.WriteLine(item.ToString());
}
public static implicit operator MyClass<T>(T d)
{
return new MyClass<T>(d);
}
}
接下来,我们应该使用索引器定义DictionaryClass
MyClass
:
public class DictionaryClass<T>
{
private readonly Dictionary<string, MyClass<T>> dict;
public DictionaryClass()
{
dict = new Dictionary<string, MyClass<T>>();
}
public MyClass<T> this[string index]
{
get
{
return dict[index];
}
set
{
dict[index] = value;
}
}
}
使用示例:
public void Run()
{
var myDictionary = new DictionaryClass<string>();
myDictionary["Name"] = "Data";
myDictionary["Name"].PrintItem(); // Prints "Data"
}