像下面 定义的属性,编译的时候不报错,但运行时,会陷于死循环中,问下,编译的时候 编译器为什么没有做检查呢?
private int m_propID=0;
public int PropID
{
get { return m_propID; }
set { PropID= value; }
}
请大家帮忙?
PropID 是属性,是可访问的。何必这样纠结呢,写过来不就行了。
这个如果会报错的话,那么下面的方法是不是也得编译报错了……
public void Bug() {
Bug();
}
属性没有自己的存储空间,类似方法,是可以递归的,为什么要报错呢
这个就好比是一个递归调用,因为没有终止条件、会陷入死循环,最后触发 StackOverflowException。