是否可以在方法C#中获取一个变量

本文关键字:变量 一个 获取 方法 是否 | 更新日期: 2023-09-27 18:26:53

我想知道我是否可以在方法中获得一个变量,例如:

Foo.cs

public void Foo()
{ 
   int getme = 1;
}
public void FooGetter()
{ 
   Foo(); //how can i get that variable get me ? without using delegates or anything just using method. Foo:getme?
}

是否可以在方法C#中获取一个变量

您不能直接从另一个方法访问一个方法的局部变量。

但是,您可以将Foo方法返回类型从void更改为int,并返回此变量:

public int Foo()
{ 
   int getme = 1;
   return getme;
}
public void FooGetter()
{
    int getme = Foo();
}

或者您可以使用out参数修改器返回:

public void Foo(out int getme)
{ 
   getme = 1;   
}
public void FooGetter()
{ 
   int getme;
   Foo(out getme); 
   // at this point getme will contain value assigned in Foo
}

简单的回答:不,这不起作用,因为您的变量只在Foo的范围内定义。但是,您可以将返回值添加到Foo:

public int Foo() { return getMe; }

现在,您可以通过调用Foo()来访问该值。

要进一步了解作用域,请阅读MSDN上的这篇文章。

或者你可以创建一个你的类成员:

class MyClass {
    int getme;
    void Foo() {
        this.getme = 1;
    }
    void FooGetter() {
        var result = this.getme;
    }
}    

现在您可以在呼叫Foo之后呼叫FooGetter

您应该使用方法返回值。

public int Foo() //change this to return type
{ 
   int getme = 1;
   //do something else
   return getme;
}
public void FooGetter()
{
   int result = Foo(); // here you receive variable getme
}