C# 类初始化-属性与字段
我想知道C# 类初始化-属性与字段,c#,class,properties,initialization,field,C#,Class,Properties,Initialization,Field,我想知道类初始化的最佳实践是什么 可以这样写: private myClass mc = new myClass(); 或: 我总是倾向于将其用作字段。将类用作属性是否有任何缺点?我在谷歌上做了一些搜索,但没有一个搜索结果能很好地回答这个问题。如果它是私有的,那么把它变成一个财产并没有什么好处。我会把它当作一块地。我使用属性作为API与其他类通信的一种方式。在第二个示例中使用属性是不必要的。你可以这样写: private myClass mc; public Foo() { mc =
类初始化的最佳实践是什么
可以这样写:
private myClass mc = new myClass();
或:
我总是倾向于将其用作字段
。将类用作属性是否有任何缺点?我在谷歌上做了一些搜索,但没有一个搜索结果能很好地回答这个问题。如果它是私有的,那么把它变成一个财产并没有什么好处。我会把它当作一块地。我使用属性作为API与其他类通信的一种方式。在第二个示例中使用属性是不必要的。你可以这样写:
private myClass mc;
public Foo()
{
mc = new myClass();
}
属性应该是getter/setter,这意味着它们提供了信息隐藏机制的一部分。将它们设置为私有并没有多大作用,因为类中的所有方法都可以看到私有成员。我提供了第一种方法:
私有myClass mc=新myClass()
因为:
- 私有财产没有好处李>
- 如果创建另一个构造函数,则会复制初始化代码,除非创建某个Init方法或调用this(),而这并不像初始化字段那么简单
第三个选项的可能副本是您可以编写私有myClass mc;public Foo(){mc=new myClass();}
这不是重复的。我忽略了这个属性是私有的这一事实,因为我以前从未见过有人这样做。私有属性绝对没有任何好处。@DavidArno我故意将它们设置为private,因为我想知道如何在类本身中进行类初始化。根据答案,我将继续使用字段方式
:)@DeMama对您有好处:)如果存在一些逻辑,甚至是类内部的逻辑,我会将其作为属性,这些逻辑应该与属性隔离。然而,对于自动实现的属性,我同意这并没有实际的好处。
private myClass mc;
public Foo()
{
mc = new myClass();
}