这个泛型类出了什么问题
本文关键字:什么 问题 泛型类 | 更新日期: 2023-09-27 18:20:26
我正在尝试为一个大的缓冲区堆栈做一个Buffer Holder。
类别为:
缓冲等级:
internal class Buffer<T>
{
private T[] buffer;
public Buffer(T[] buffer)
{
this.buffer = buffer;
}
public void clear()
{
Array.Clear(buffer, 0, buffer.Length);
}
public int length()
{
return buffer.Length;
}
}
DataPool类:
internal sealed class DataPool<T> : List<Buffer<T>>
{
public DataPool() : base() {}
}
以及我如何创建bufferList:
public Server
{
DataPool<byte[]> bufferList;
byte[] = buffer;
public Server(...)
{
buffer = new byte[ServerConfig.MaxBufferSize];
this.bufferList = new DataPool<byte[]>();
}
}一切都好,但我不能把缓冲区添加到缓冲区列表中,比如:
bufferList.Add(buffer); //This is not working, why?
我该怎么做?
谢谢!
这应该有效:
var bufferList = new DataPool<byte>();
bufferList.Add(new Buffer<byte>(buffer));
您必须使用DataPool<byte>
和Buffer<byte>
,因为这会导致Buffer接受字节数组,而这正是您想要的。
您还需要创建缓冲区:
bufferList.Add(new Buffer<byte[]>(buffer));
您的buffer
属于byte[]
类型,而您的bufferList
将继承List<Buffer<byte[]>>
。
尝试
bufferList.Add(new Buffer<byte[]>(buffer));
如果在Buffer<byte[]>
和byte[]
:之间实现隐式类型转换,也应该可以按原样使用代码
public static implicit operator Buffer<T[]>(T[] ba) // implicit digit to byte conversion operator
{
return new Buffer<T[]>(ba);
}
我还没有测试过,但这种效果应该是可能的。