C#中的StackoverFlowException

时间:2011-11-09 18:43:28

标签: c#

我正在编写一个代码,用于在C#中设置属性并获得异常。

public class person
{
    public string name
    {
        set
        {
            name = value;
        }
        get
        {
            return name;
        }
    }

    public static void Main()
    {

        person p = new person();
        p.name = "Bilal";

        Console.WriteLine(p.name);
    }
}

4 个答案:

答案 0 :(得分:14)

你的属性中有无限递归 - 你的setter会调用自己直到你得到堆栈溢出:

    set
    {
        name = value;
    }

而是使用auto-property(如果您不需要直接访问支持字段并且不在getter / setter中执行任何其他操作,则建议使用):

public string name {get;set;}

或使用支持字段:

private string _name;
public string name
{
    set
    {
        _name = value;
    }
    get
    {
        return _name;
    }
}

答案 1 :(得分:5)

您的媒体资源名称和字段名称相同(“名称”)。将属性名称大写。

或者只是切换到自动道具:

public class Person
{
    public string Name { get; set; }
}

答案 2 :(得分:2)

只需使用

  private string _name;
  public string Name
    {
        set
        {
            _name = value;
        }
        get
        {
            return _name;
        }
    }

避免这个问题,并清楚发生了什么。

答案 3 :(得分:1)

你需要这样的东西:

string name;
public string Name
    {
        set
        {
            name = value;
        }
        get
        {
            return name;
        }
    }