在使用C#中的通用类和方法时,我需要您的帮助。在ProduceData中用EnqueueObject(block)的行调用EnqueObject方法时,会发生错误:无法将'byte []'转换为'T'。我将不胜感激任何建议。
((我简化了代码,因为我认为我的问题确实很基本)。
class CompressingProducer<T>
{
Queue<T> _queue;
public void ProduceData(object fileInputStream)
{
byte[] block = new byte[Settings.blockSize];
int bytesRead;
while ((bytesRead = ((Stream)fileInputStream).Read(block, 0, Settings.blockSize)) > 0)
{
EnqueueObject(block);
block = new byte[Settings.blockSize];
}
}
private void EnqueueObject(T data)
{
_queue.Enqueue(data);
}
}
您的函数声明不正确,因为您传递的数组应该是IList或应为IList
private void EnqueueObject(T[] data)
{
_queue.Enqueue(data);
}
或更好,以便您可以传递数组或列表
private void EnqueueObject(IList<T> data)
{
_queue.Enqueue(data);
}