Code Bye

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

 

如题  我要在  Find()这个方法中引用 nStream这个方法 

你就不能为Find方法加个Stream nStream参数的
做成类的成员
把需要的变量定义在Start_Connect外就可以了。
如NetWorkStream nStream = null;
在方法内定义的变量,有效范围,只到方法结束。
方法中的变量在方法结束后就销毁了,在方法外定义吧。
看你这个类是必须要有执行先后顺序的,那你就应该修改类设计
Start_Connect可以改成构造函数,Stream可以放到类的全部变量,最后实现IDispose接口,在Dispose方法中将Stream销毁
请问你是新手吗? 还在问这样的问题
5 楼说的在理  就不重复了
全局变量和局部变量
很明显,你应该定义在外边
引用 5 楼 starfd 的回复:

看你这个类是必须要有执行先后顺序的,那你就应该修改类设计
Start_Connect可以改成构造函数,Stream可以放到类的全部变量,最后实现IDispose接口,在Dispose方法中将Stream销毁

前两天一直没看回复  感觉你说的蛮有道理  我试着把Start_Connect改成构造函数   可是把Stresm定义到类的全局变量好像就报错咯  还是我定义的方法不对 

这个client应该作为构造函数的参数传递进来……然后注意继承IDispose接口
然后构造函数内部赋值给client
public RequestHandler(TcpClient client)
{
    if(client==null)
   {
             throw new ArgumentNullException();
   }
    this.client = client;
   //your code
}

举例说明

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这样定义成全局?

求完整的代码段让我看看  思路有点乱
类里面的就不需要new了,当然如果你后面其实根本用不到client,那就没必要设置成全局的,只要stream就可以了
那就把变量定义到方法外面,也就是类的类的字段(成员变量)
你把nStream定义在方法外面不就可以了吗??
引用 16 楼 starfd 的回复:

类里面的就不需要new了,当然如果你后面其实根本用不到client,那就没必要设置成全局的,只要stream就可以了

后面只用到stream  可是我在构造函数外面声明它提示这个错误

看来你得恶补下面向对象编程的基础
成员变量的初始化,最好是放在构造函数中(函数外面只定义,不赋初值)
.Net中非托管资源的释放,建议实现IDisposable接口,写在Dispose()中
client.GetStream()在构造函数里执行……
Quote: 引用 20 楼 dongxinxi 的回复:

恩恩  其实我一直都用C编的  偏硬件一点  现在是为了测试我的单片机程序才试着在PC端用C#

引用 21 楼 starfd 的回复:

client.GetStream()在构造函数里执行……

那我在构造函数中对stream初始化了  可在下面 Find()的方法中如何调用这个stream呢?

你的nstream还是要声明到类级别的啊
10分
public class RequestHandler
{
  private NetworkStream nStream; //这样声明
  public void Start_Connect()
  {
    ……
    nStream = client.GetStream(); //这样使用
    …..

就是把 nStream 从局部变量提升为类属性

10分
引用 25 楼 xuzuning 的回复:

public class RequestHandler
{
  private NetworkStream nStream; //这样声明
  public void Start_Connect()
  {
    ……
    nStream = client.GetStream(); //这样使用
    …..

就是把 nStream 从局部变量提升为类属性

顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志

引用 26 楼 johnliuyuan 的回复:
Quote: 引用 25 楼 xuzuning 的回复:

public class RequestHandler
{
  private NetworkStream nStream; //这样声明
  public void Start_Connect()
  {
    ……
    nStream = client.GetStream(); //这样使用
    …..

就是把 nStream 从局部变量提升为类属性

顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志

引用 26 楼 johnliuyuan 的回复:
Quote: 引用 25 楼 xuzuning 的回复:

public class RequestHandler
{
  private NetworkStream nStream; //这样声明
  public void Start_Connect()
  {
    ……
    nStream = client.GetStream(); //这样使用
    …..

就是把 nStream 从局部变量提升为类属性

顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志

行了哈   已经调通了 其实我这个不用改成构造函数也行的  感谢耐心解答

引用 26 楼 johnliuyuan 的回复:
Quote: 引用 25 楼 xuzuning 的回复:

public class RequestHandler
{
  private NetworkStream nStream; //这样声明
  public void Start_Connect()
  {
    ……
    nStream = client.GetStream(); //这样使用
    …..

就是把 nStream 从局部变量提升为类属性

顶,就是把nStream做成类的变量,而不是方法的临时变量,就可以在不同的方法中引用了,别忘了加上初始化的标志

你说的初始化标志指什么?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 同一个类中的方法如何引用另一个方法中的变量