C#中的StackoverFlowException

Smo*_*ker -1 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 14

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

    set
    {
        name = value;
    }
Run Code Online (Sandbox Code Playgroud)

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

public string name {get;set;}
Run Code Online (Sandbox Code Playgroud)

或使用支持字段:

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


Jor*_*Day 5

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

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

public class Person
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)