实现get-set-property时的C#SIGSEGV

时间:2012-08-08 16:21:22

标签: c# mono segmentation-fault sigsegv

当我尝试使用body实现get-set-property并使用该set时,它总是以SIGSEGV退出 - 一个分段错误。我在Mac OS X Mountain Lion(10.8)下运行Mono 2.10.9 + MonoDevelop 3.0.3.5。以下是我可以使用的最小代码量:

public class MainClass {
    public static int Main(string[] args) {
        Foo foo = new Foo();
        foo.Bar = 42;        // Never makes it past this line
        return 0;
    }
}

public class Foo {
    public int Bar {
        get { return Bar; }
        set { Bar = value; }
    }
}

我做错了什么,或者这是一个单声道的错误?

2 个答案:

答案 0 :(得分:3)

尝试将代码更改为:

public class Foo {
    public int Bar { get; set; }
}

或者这个:

public class Foo {
    private int _bar;
    public int Bar {
       get { return _bar; }
       set { _bar = value; }
    }
}

您没有支持商店。您需要添加一个,或使用自动属性。编写代码的方式是在访问这些属性时递归调用get / set。

答案 1 :(得分:1)

您可以使用自动实现的属性:

public int Bar { get; set; }

或者您可以使用字段:

private int _bar;
public int Bar 
{ 
    get { return value; } 
    set { _bar = value; } 
}
相关问题