参考重定向

时间:2018-04-07 13:18:19

标签: c# reference

我知道哪些找不到任何直接语法。我想知道是否有可能重载引用类型,以便在以某种方式引用它时将其引用类型重定向到新引用类型。 我想展示一个例子:

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值。

这只是我很好奇的事情,我不知道它是否可能,或许有某种参考重载,或者我不知道。 谢谢你的回答!

1 个答案:

答案 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