类属性上的StackOverFlow

Unk*_*ech 2 c#

重复:

C#的新手,为什么Property Set会抛出StackOverflow异常?

我有一个简单的类调用myClass,它有一个名为isAuthenticated的属性,代码如下:

public class myClass
{
        public myClass()
        {
            this.isAuthenticated = false;
        }
        public bool isAuthenticated
        {
            get { return isAuthenticated; }
            set { isAuthenticated = value; }
        }
}
Run Code Online (Sandbox Code Playgroud)

当我在课堂上初学时,我在set {...}行上获得了一个stackoverflow,我做错了什么?

kro*_*old 13

getter/setter正在调用自己.添加成员变量.

{
     bool isAuthenticated;
        public myClass()
        {
            IsAuthenticated = false;
        }
        public bool IsAuthenticated
        {
            get { return isAuthenticated; }
            set { isAuthenticated = value; }
        }
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*sti 6

因为您正在设置myClass.IsAuthenticated属性本身.

您必须将值保存在本地变量中,或者如果您使用C#3.0或更高版本,只需执行(自动属性)

public bool IsAuthenticated {get; set;}
Run Code Online (Sandbox Code Playgroud)