在方法重载之间共享变量?

时间:2014-01-17 09:35:48

标签: c# methods

我是一个真正的新手程序员,我正在尝试进行一个共享变量的重载。基本上我想要做的是有一个带有一个重载的方法,它将整数值写入其中的变量,另一个重载只返回该值。

现在我试着这样做:

private int GetQID(int qID)
    {
        int ID = qID;
    }    
private int GetQID()
    {
        return ID;
    }

遗憾的是,这不起作用,因为第二个重载无法访问第一个重载的“ID”变量。有没有办法不诉诸全局变量,我能做到这一点吗?

2 个答案:

答案 0 :(得分:5)

不,局部变量纯粹是所讨论方法的局部变量。你想要实现的目标并不是很清楚,但是如果你想要在方法调用之间持续存在任何状态,你需要一个字段,并且可能将它作为属性公开。

private int id;
public int Id
{
    set
    {
        // Perform some validation?
        id = value;
    }
    get { return id; }
}

如果您只想要一个没有其他逻辑的字段支持的属性,那么自动实现的属性很有用:

public int Id { get; set; }

答案 1 :(得分:0)

不,您无法访问本地变量。

它们是分配在方法内,你无法控制在哪里,如何以及何时,因为这些决定是由编译器做出的,因此你甚至无法通过 dirty 技巧。

关于global variables are evil,你最好自己问问你的朋友他的意思(他是对的,但只是在某种程度上)。因为您必须在许多类中使用属​​性和字段,并且如果将其实例提供给每个人(或者如果它是具有静态属性/字段的静态类,单例),则任何类都可以突然变为全局

在您的要求中,您所需要的只是该类的正常属性(正如其他人已经回答的那样):您可以设置它的值并在之后读取它。但重要的是你要如何使用该类,因为这可能会突然变成 bad