如题 我要在 Find()这个方法中引用 nStream这个方法 |
|
你就不能为Find方法加个Stream nStream参数的
|
|
做成类的成员
|
|
把需要的变量定义在Start_Connect外就可以了。
如NetWorkStream nStream = null; 在方法内定义的变量,有效范围,只到方法结束。 |
|
方法中的变量在方法结束后就销毁了,在方法外定义吧。
|
|
看你这个类是必须要有执行先后顺序的,那你就应该修改类设计
Start_Connect可以改成构造函数,Stream可以放到类的全部变量,最后实现IDispose接口,在Dispose方法中将Stream销毁 |
|
请问你是新手吗? 还在问这样的问题
|
|
5 楼说的在理 就不重复了
|
|
全局变量和局部变量
|
|
很明显,你应该定义在外边
|
|
前两天一直没看回复 感觉你说的蛮有道理 我试着把Start_Connect改成构造函数 可是把Stresm定义到类的全局变量好像就报错咯 还是我定义的方法不对 |
|
这个client应该作为构造函数的参数传递进来……然后注意继承IDispose接口
|
|
然后构造函数内部赋值给client
|
|
public RequestHandler(TcpClient client) { if(client==null) { throw new ArgumentNullException(); } this.client = client; //your code } 举例说明 |
|
|
|
求完整的代码段让我看看 思路有点乱
|
|
类里面的就不需要new了,当然如果你后面其实根本用不到client,那就没必要设置成全局的,只要stream就可以了
|
|
那就把变量定义到方法外面,也就是类的类的字段(成员变量)
|
|
你把nStream定义在方法外面不就可以了吗??
|
|
后面只用到stream 可是我在构造函数外面声明它提示这个错误 |
|
看来你得恶补下面向对象编程的基础
成员变量的初始化,最好是放在构造函数中(函数外面只定义,不赋初值) .Net中非托管资源的释放,建议实现IDisposable接口,写在Dispose()中 |
|
client.GetStream()在构造函数里执行……
|
|
|
|
那我在构造函数中对stream初始化了 可在下面 Find()的方法中如何调用这个stream呢? |
|
你的nstream还是要声明到类级别的啊
|
|
10分 |
public class RequestHandler
{ private NetworkStream nStream; //这样声明 public void Start_Connect() { …… nStream = client.GetStream(); //这样使用 ….. 就是把 nStream 从局部变量提升为类属性 |
10分 |
顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志 |
行了哈 已经调通了 其实我这个不用改成构造函数也行的 感谢耐心解答 |
|
你说的初始化标志指什么? |