繁体   English   中英

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

[英]Sharing a variable between method overloads?

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

现在我尝试这样做:

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

不幸的是,这不起作用,因为第二个重载无法访问第一个重载的“ ID”变量。 有什么办法可以不用求助于全局变量吗?

不,局部变量仅是所讨论方法的局部变量。 目前尚不清楚您要实现的目标,但是如果您希望在方法调用之间保持任何状态,则需要一个字段,并可能将其公开为属性。

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

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

public int Id { get; set; }

不,您不能访问局部变量。

它们是在方法内部分配的 ,您无法控制在哪里,如何以及何时进行,因为这些决定是由编译器做出的,因此即使通过肮脏的技巧也无法访问它们。

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

在您的需求中,您需要的只是该类的常规属性 (就像其他人已经回答过的一样):您可以设置其值并在以后读取它。 但是,如何使用该类很重要,因为这可能会突然变坏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM