结构和堆栈溢出C#

Jon*_*ris 1 c# struct

嗨,我有这个程序,我正在编写使用下面的结构.我一直收到stackoverflow错误,异常是在公共字符串sessionID set ...(其中">>>"是)的第一个括号中停止程序.

  public struct SessionStruct 
{
    public string sessionID
    {
        get
        {
            return sessionID;
        }
        set
  >>>   {
            sessionID = value;
        }
    } 
    public DateTime time
    {
        get
        {
            return time;
        }
        set
        {
            time = value;
        }
    }

    public string type
    {
        get
        {
            return type;
        }
        set
        {
            type = value;
        }
    } 
};
Run Code Online (Sandbox Code Playgroud)

以下是设置结构的代码:

if (type == "11" || type == "9")
                {
                    s.sessionID = attributeArray[0].ToString();
                    s.time = DateTime.Now;
                    if (type == "9")
                        s.type = attributeArray[4].ToString();
                }
                else
                {
                    s.sessionID = null;
                    s.time = DateTime.Now;
                    s.type = null;
                }
Run Code Online (Sandbox Code Playgroud)

我在这里先向您的帮助表示感谢...

Eri*_*rix 7

你在那个setter中做了无限递归.想一想.创建一个不同名称的私有成员来获取/设置.

private string sessionID;
public string SessionID
    {
        get
        {
            return sessionID;
        }
        set
        {
            sessionID = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 这不是吸气器中的无限递归吗?它基本上就像一个函数`public string GetSessionID(){return GetSessionId(); }` (2认同)

PHe*_*erg 5

sessionId属性setter将其自身调用,从而导致永久递归.