我是一个真正的新手程序员,我正在尝试进行一个共享变量的重载。基本上我想要做的是有一个带有一个重载的方法,它将整数值写入其中的变量,另一个重载只返回该值。
现在我试着这样做:
private int GetQID(int qID)
{
int ID = qID;
}
private int GetQID()
{
return ID;
}
遗憾的是,这不起作用,因为第二个重载无法访问第一个重载的“ID”变量。有没有办法不诉诸全局变量,我能做到这一点吗?
答案 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 来访问它们em>技巧。
关于global variables are evil
,你最好自己问问你的朋友他的意思(他是对的,但只是在某种程度上)。因为您必须在许多类中使用属性和字段,并且如果将其实例提供给每个人(或者如果它是具有静态属性/字段的静态类,单例),则任何类都可以突然变为全局。
在您的要求中,您所需要的只是该类的正常属性(正如其他人已经回答的那样):您可以设置它的值并在之后读取它。但重要的是你要如何使用该类,因为这可能会突然变成 bad 。