我有一个非静态类,其中我有几个属性,即serverURL,serverPort等,并且该类有一个构造函数。构造函数接受参数,然后用它来“设置”属性,初始化它们。这是代码:
public Server(string newServerAddress, int newServerPort) {
serverAddress = newServerAddress;
serverPort = newServerPort;
}
public string serverAddress {
get {
return serverAddress;
}
set {
serverAddress = value;
}
}
public int serverPort {
get {
return serverPort;
}
set {
serverPort = value;
}
由于某种原因,这给了我一个堆栈溢出错误,我不知道为什么。以下是用于调用它的代码:
Server test = new Server("server.url.here",8080);
这个代码显然是由一个类绑定的,但我把它留在了这里。这是一个业余问题,我以前做过这样的事情,但我对发生的事情感到很困惑,当我在visual studio中尝试调试它时,它告诉我它无法调试它,大概是因为它正在使用堆栈进行调试。
答案 0 :(得分:5)
观察区分大小写。该物业正在返回。
public string serverAddress {
get {
return serverAddress; // recursing here
}
}
答案 1 :(得分:3)
您忘记为属性使用支持字段。属性setter使用属性本身,无休止地递归。修复如下:
private string mServerAddress;
public string serverAddress {
get {
return mServerAddress;
}
set {
mServerAddress = value;
}
}
或使用自动属性语法:
public string ServerAddress { get; set; }
答案 2 :(得分:1)
你在属性setter或getter中有递归。 请尝试使用此代码:
public Server(string newServerAddress, int newServerPort) {
serverAddress = newServerAddress;
serverPort = newServerPort;
}
public string serverAddress { get; set; }
public int serverPort { get; set; }
答案 3 :(得分:1)
您正在引用setter中的setter ...
在您的属性serverAddress中,您有以下行:
serverAddress = value
将转到serverAddress属性的setter,并循环地进行循环...
使用以下语法:
private string _serverPort;
public string ServerPort
{
get { return _serverPort; }
set { _serverPort = value; }
}
希望这会有所帮助:)