gpt4 book ai didi

c# - 如何让一个类充当数组?

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:13 26 4
gpt4 key购买 nike

具有索引器的类不是 System.Array。但我想像数组一样使用我的实现。例如访问扩展方法。

有什么办法可以实现吗?

public class MyArray<T> 
{
private T[] _array;

public MyArray(int size)
{
_array = new T[size];
}

public T this[int index]
{
get { return _array[index]; }
set { _array[index] = value; }
}
}

public static class ArrayExtensions
{
public static void T[] Foo(this T[] array)
{
// ..
}
}

public class ArrayUser
{
public ArrayUser()
{
var a = new MyArray(10);
a.Foo(); // does not compile, Foo() is unknown
}
}

最佳答案

MyArray 使用泛型,因此您的扩展方法也需要使用泛型。

public class MyArray<T>
{
private T[] _array;

public MyArray(int size)
{
_array = new T[size];
}

public T this[int index]
{
get { return _array[index]; }
set { _array[index] = value; }
}
}

public static class ArrayExtensions
{
public static void Foo<T>(this MyArray<T> myArray)
{
// ..
}
}

public class ArrayUser
{
public ArrayUser()
{
var a = new MyArray<int>(10);
a.Foo(); // does not compile, Foo() is unknown
}
}

关于c# - 如何让一个类充当数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50421083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com