C#泛型-无法将'byte []'转换为'T'[duplicate]

问题描述 投票:0回答:1

在使用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); 

        }
    }
c# generics generic-programming generic-collections
1个回答
-2
投票

您的函数声明不正确,因为您传递的数组应该是IList或应为IList

 private void EnqueueObject(T[] data) 
 {
     _queue.Enqueue(data); 

 }

或更好,以便您可以传递数组或列表

 private void EnqueueObject(IList<T> data) 
 {
     _queue.Enqueue(data); 

 }
© www.soinside.com 2019 - 2024. All rights reserved.