Auto-property default value
我可以用默认值在c auto属性中生成吗?
1 2 3 4 5 6 7 8 9
| public class MyClass
{
MyClass()
{
Reason ="my reason";
}
public string Reason{ get; set; }
} |
- 你试过看它是否有效吗?
- 您是在询问您提供的代码是否有效,还是有其他方法?对于自动属性-不,这是唯一的方法。
是的,但为了能够从类外部创建实例,请将构造函数设为公共的。
1 2 3 4 5 6 7 8 9
| public class MyClass
{
public MyClass()
{
Reason ="my reason";
}
public string Reason {get; set; }
} |
是的,你可以。一定地。就像你展示的那样。
- 投反对票是为了什么?(我本来想发一个"是的"。但不幸的是,我不想发这么短的答案。)
- 没有投否决票,但是它不能运行as shown,因为构造函数不是公共的,所以var mc = new MyClass()甚至不会编译。
- @阿巴斯:正如在msdn上所解释的,成员的默认可见性是private,因此构造函数实际上不是公共的。它只能从类内调用。OP在哪里要求var mc = new MyClass();可编译?
- @阿巴斯,他在任何地方都不做任何事情……如果你想变得学究。反正+1:
- 没有说他需要这个,我只是提到这个。但你的回答是对的,@dimitardimitrov,不是有意学究,我只是想帮你,+1。:)
- @阿巴斯,我当然明白了,如果我听起来像个混蛋,我会很抱歉,今天过得很长。)干杯。
- 不,最好是指出。使我在给出评论/回答之前思考得更长。;)
- @阿巴斯:只是要清楚一点,公共构造函数可能是可取的。但它确实是按原样编译的,并且可能OP希望保持构造函数的私有性,并添加一个静态工厂方法(或者只是通过反射(在某些情况下)来实例化类)。
- 你说得对。这就是为什么我从一开始就解释你是对的,为什么你得到了我的支持。:)
您必须添加一个默认的构造函数并初始化autoproperty值。
- 他就是这么做的。他只是想知道这是否可行。
- 我在问这是不是正确/最好的方法
- 是的,这是唯一的办法。!!
- 我提出这个解决方案是因为它有效!;)