尝试在Get中设置时出现C#堆栈溢出异常

Kas*_*hif 1 c# stack-overflow get set

所以我试图对此很聪明,但看起来这个想法是非常愚蠢的,因为我正在获得一个堆栈溢出异常.

理想情况下,CheckInternetStatus每当我使用IsConnected旗帜时,我都希望能够运行.

我怎样才能正确完成这个?或者这根本不是一个好主意?

public static class Internet
{
    public static bool IsConnected
    {
        get
        {
            CheckInternetStatus();
            return IsConnected;
        }
        set
        {
            IsConnected = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

附加信息:CheckInternetStatus更新IsConnected

Mit*_*eat 5

您的代码有两个问题:

1)没有后备变量,你递归调用属性IsConnected:

private bool _isConnected;

public static bool IsConnected
{
    get
    {
        _isConnected = CheckInternetStatus();
        return _isConnected;
    }
    set
    {
        _isConnected = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

2)你不应该在房产中做很多工作.请改用方法.这更好地传达了阅读代码的人的意图

实际上有3件事:

3)如果你坚持使用属性(我不会),那么setter应该是private.如果未实际连接,则不希望设置连接.