我知道哪些找不到任何直接语法。我想知道是否有可能重载引用类型,以便在以某种方式引用它时将其引用类型重定向到新引用类型。 我想展示一个例子:
public class MyClass
{
public ICollection<int> CollectionProperty { get; private set; }
public MyClass()
{
this.CollectionProperty = new List<int>();
}
}
这只是一个简单的类,但是当引用MyClass时,例如在foreach中,我希望它像这样引用它的内部集合:
MyClass instance = new MyClass();
foreach(int item in instance)
{
// do stuff
}
所以这里的一个项目将是该类集合的int值。
这只是我很好奇的事情,我不知道它是否可能,或许有某种参考重载,或者我不知道。 谢谢你的回答!
答案 0 :(得分:0)
您可以实现IEnumerable以启用foreach
功能。
public class MyClass<T> : IEnumerable<T>
{
public List<T> Collection { get; set;}
public T this[int index]
{
get { return Collection[index]; }
set { Collection.Insert(index, value); }
}
public IEnumerator<T> GetEnumerator()
{
return Collection.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
public MyClass()
{
Collection = new List<T>();
}
}
public class Program
{
public static void Main()
{
var instance = new MyClass<int>();
instance.Collection.Add(1);
instance.Collection.Add(2);
instance.Collection.Add(3);
foreach(int item in instance)
Console.WriteLine(item);
}
}
输出:
1 2 3