C# 同一个类中的方法如何引用另一个方法中的变量

maclao 2015-04-08 04:55:34
如题 我要在 Find()这个方法中引用 nStream这个方法
...全文
2803 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
client.GetStream()在构造函数里执行……
  • 打赏
  • 举报
回复
看来你得恶补下面向对象编程的基础 成员变量的初始化,最好是放在构造函数中(函数外面只定义,不赋初值) .Net中非托管资源的释放,建议实现IDisposable接口,写在Dispose()中
maclao 2015-04-20
  • 打赏
  • 举报
回复
引用 16 楼 starfd 的回复:
类里面的就不需要new了,当然如果你后面其实根本用不到client,那就没必要设置成全局的,只要stream就可以了

后面只用到stream 可是我在构造函数外面声明它提示这个错误
程序猿老曾 2015-04-20
  • 打赏
  • 举报
回复
你把nStream定义在方法外面不就可以了吗??
  • 打赏
  • 举报
回复
那就把变量定义到方法外面,也就是类的类的字段(成员变量)
  • 打赏
  • 举报
回复
类里面的就不需要new了,当然如果你后面其实根本用不到client,那就没必要设置成全局的,只要stream就可以了
maclao 2015-04-20
  • 打赏
  • 举报
回复
求完整的代码段让我看看 思路有点乱
maclao 2015-04-20
  • 打赏
  • 举报
回复
[quote=引用 13 楼 starfd 的回复:]

public  class RequestHandler
		{
			
           
             TcpClient client = new TcpClient();
             NetworkStream nStream = client.GetStream();
public RequestHandler(TcpClient client)
			{
                if (client == null)
                {
                    throw new ArgumentNullException();
                }
                this.client = client;
               client = new TcpClient();
                client.Connect("192.168.16.253", 8080);		// 与服务器连接
是这样吗 我把 nStrea这样定义成全局?
  • 打赏
  • 举报
回复
public RequestHandler(TcpClient client)
{
    if(client==null)
   {
             throw new ArgumentNullException();
   }
    this.client = client;
   //your code
}
举例说明
  • 打赏
  • 举报
回复
然后构造函数内部赋值给client
  • 打赏
  • 举报
回复
这个client应该作为构造函数的参数传递进来……然后注意继承IDispose接口
maclao 2015-04-20
  • 打赏
  • 举报
回复
引用 5 楼 starfd 的回复:
看你这个类是必须要有执行先后顺序的,那你就应该修改类设计
Start_Connect可以改成构造函数,Stream可以放到类的全部变量,最后实现IDispose接口,在Dispose方法中将Stream销毁

前两天一直没看回复 感觉你说的蛮有道理 我试着把Start_Connect改成构造函数 可是把Stresm定义到类的全局变量好像就报错咯 还是我定义的方法不对
maclao 2015-04-20
  • 打赏
  • 举报
回复
引用 26 楼 johnliuyuan 的回复:
[quote=引用 25 楼 xuzuning 的回复:] public class RequestHandler { private NetworkStream nStream; //这样声明 public void Start_Connect() { ...... nStream = client.GetStream(); //这样使用 ..... 就是把 nStream 从局部变量提升为类属性
顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志[/quote] 你说的初始化标志指什么?
maclao 2015-04-20
  • 打赏
  • 举报
回复
引用 26 楼 johnliuyuan 的回复:
[quote=引用 25 楼 xuzuning 的回复:] public class RequestHandler { private NetworkStream nStream; //这样声明 public void Start_Connect() { ...... nStream = client.GetStream(); //这样使用 ..... 就是把 nStream 从局部变量提升为类属性
顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志[/quote]
引用 26 楼 johnliuyuan 的回复:
[quote=引用 25 楼 xuzuning 的回复:] public class RequestHandler { private NetworkStream nStream; //这样声明 public void Start_Connect() { ...... nStream = client.GetStream(); //这样使用 ..... 就是把 nStream 从局部变量提升为类属性
顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志[/quote] 行了哈 已经调通了 其实我这个不用改成构造函数也行的 感谢耐心解答
john_QQ:2335298917 2015-04-20
  • 打赏
  • 举报
回复
引用 25 楼 xuzuning 的回复:
public class RequestHandler { private NetworkStream nStream; //这样声明 public void Start_Connect() { ...... nStream = client.GetStream(); //这样使用 ..... 就是把 nStream 从局部变量提升为类属性
顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志
xuzuning 2015-04-20
  • 打赏
  • 举报
回复
public class RequestHandler { private NetworkStream nStream; //这样声明 public void Start_Connect() { ...... nStream = client.GetStream(); //这样使用 ..... 就是把 nStream 从局部变量提升为类属性
  • 打赏
  • 举报
回复
你的nstream还是要声明到类级别的啊
maclao 2015-04-20
  • 打赏
  • 举报
回复
引用 21 楼 starfd 的回复:
client.GetStream()在构造函数里执行……
那我在构造函数中对stream初始化了 可在下面 Find()的方法中如何调用这个stream呢?
maclao 2015-04-20
  • 打赏
  • 举报
回复
[quote=引用 20 楼 dongxinxi 的回复:] 恩恩 其实我一直都用C编的 偏硬件一点 现在是为了测试我的单片机程序才试着在PC端用C#
小K的大师兄 2015-04-09
  • 打赏
  • 举报
回复
请问你是新手吗? 还在问这样的问题
加载更多回复(8)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧