C# 流串联错误

C# 流串联错误,c#,stream,C#,Stream,我有两个流,我想合并成一个流。第一个流是用户定义的stringStream类,它继承自System.IO.stream类,第二个流是networkStream,我创建了一个流数组,其中存储了这两个流,并将其作为参数传递给用户定义的类combinedStream构造函数。下面是代码行 StringStream stringStream = new StringStream("test string"); Stream[] streamArray = new Stream[2]; streamArr

我有两个流,我想合并成一个流。第一个流是用户定义的stringStream类,它继承自System.IO.stream类,第二个流是networkStream,我创建了一个流数组,其中存储了这两个流,并将其作为参数传递给用户定义的类combinedStream构造函数。下面是代码行

StringStream stringStream = new StringStream("test string");
Stream[] streamArray = new Stream[2];
streamArray[0] = stringStream;
streamArray[1] = nsStream;//NetworkStream instance parameter
CombinedStream combinedStream = new CombinedStream(streamArray);
this.nsStream = (NetworkStream)combinedStream;
这是我遇到的错误:“无法将CombinedStream转换为NetworkStream”
原因可能是什么?

听起来像是
组合流
没有定义为
网络流
的子类。因此最后一行:
this.nsStream=(NetworkStream)combinedStream将作为无效转换失败。

听起来像是
组合流
未定义为
网络流
的子类。因此最后一行:
this.nsStream=(NetworkStream)combinedStream
将作为无效转换失败。

相当简单,因为
组合流
(可能是您自己的类)不是
网络流
。我没想到会这样


最大的问题是为什么
nsStream
无论如何都是
NetworkStream
。你能把类型改成流吗?这应该没问题,除非您正在使用任何特定于
网络流的方法。。。如果您正在这样做,那么当对
组合流
调用这些方法时,您希望发生什么?

相当简单,因为
组合流
(可能是您自己的类)不是
网络流
。我没想到会这样


最大的问题是为什么
nsStream
无论如何都是
NetworkStream
。你能把类型改成流吗?这应该没问题,除非您正在使用任何特定于
网络流的方法。。。如果您正在这样做,那么当对
组合流
调用这些方法时会发生什么呢?

因为它不是网络流?CombinedStream是否从NetworkStream继承?您的nsStream成员需要是NetworkStream还是可以使用CombinedStream实现的更通用的流接口?因为它不是网络流?CombinedStream是否从NetworkStream继承?您的nsStream成员需要是NetworkStream还是可以使用CombinedStream实现的更通用的流接口?我正在开发一个http应用程序,其中一个类有一个读取方法,用于读取NetworkStream,该方法将实例变量nsStream设置为CombinedStream(从流类继承的另一个类)@Xris:但是为什么
nsStream
必须是
NetworkStream
?它需要
NetworkStream
中的任何特定内容吗?我使用NetworkStream的唯一原因是因为我最初创建了一个类,该类实例化了socket中的tcp连接,并且使用socket我还可以创建一个NetworkStream对象,这样我就可以read!@Xris:这正是为什么通常最好使用您真正需要的最不特定的类型来声明变量-这意味着您可以在以后更改用于兼容类型的实际类型。我正在开发一个http应用程序,其中一个类有一个read方法用于读取NetworkStream,该方法设置实例变量nsStream到组合流(从Stream类继承的另一个类)@Xris:但是为什么
nsStream
必须是
NetworkStream
?它需要
NetworkStream
中的任何特定内容吗?我使用NetworkStream的唯一原因是因为我最初创建了一个类,该类实例化了socket中的tcp连接,并且使用socket我还可以创建一个NetworkStream对象,这样我就可以read!@Xris:这就是为什么通常最好使用您真正需要的最不特定的类型来声明变量-这意味着您可以在以后更改用于兼容类型的实际类型。