你好,我对编程世界有些新意。 所以我尝试为测试对象创建一个接口。一旦我创建了对象,我就会得到一个StackOverflowException。
Program.cs
class Program {
static void Main (string[] args) {
TestObject test = new TestObject("test");
}
}
TestObject.cs
public class TestObject : IObject {
public string Name {get{return Name;}set{Name = value;}}
public TestObject (string name) {
Name = name;
}
}
interface IObject {
string Name {get;set;}
}
答案 0 :(得分:2)
问题不在于界面,而在于属性的实现:
public string Name {get{return Name;}set{Name = value;}}
这是一个递归属性(无限调用自身)以及导致StackOverflowException的原因。
您应该像这样定义您的属性(并阅读this):
public string Name {get; set;}
或者,如果您需要使用支持字段:
public class TestObject : IObject {
private string _name;
public string Name {
get { return _name; }
set { _name = value; }
}
public TestObject (string name) {
_name = name;
}
}