首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中的类成员

C#中的类成员
EN

Stack Overflow用户
提问于 2011-11-20 18:05:35
回答 4查看 129关注 0票数 0

对于具有默认非零值的类成员,C#中的最佳实践是什么?

你可以这样写:

代码语言:javascript
复制
private int someField = 9;
public int SomeField
{
   get ( return someField; }
   set { someField = value; }
}

或者这样:

代码语言:javascript
复制
public Int32 SomeField = 9;

但是Int32和int是一样的。

那么,哪种方法更好,问题更少呢?

EN

回答 4

Stack Overflow用户

发布于 2011-11-20 18:07:04

只需使用C#别名,它们读起来更短,因此才存在。

您不应该将字段公开为public -这样会破坏封装。

简而言之,使用:

代码语言:javascript
复制
private int someField = 9;
public int SomeField
{
   get ( return someField; }
   set { someField = value; }
}
票数 6
EN

Stack Overflow用户

发布于 2011-11-20 18:50:12

@Oded提出的答案的替代方案:

代码语言:javascript
复制
public int field1 { get; set; } //auto-implemented property, :)

public MyClass() {
    field1 = 9; //or other default value
}
票数 1
EN

Stack Overflow用户

发布于 2011-11-20 18:18:35

还要注意,如果你有多个构造函数,不要在它们的声明中显式初始化字段。因为编译器会为每个构造函数生成初始化这些字段的代码。对于这种情况,使用一个初始化字段的基构造器,并让其他构造器调用这个基构造器。

代码语言:javascript
复制
int field1;
int field2;
int field3;

public MyClass()
{
  field1 = 12;
  field2 = 1;
  field3 = 5;
}
public MyClass(int SomeValue) : this()
{
   field1 = SomeValue;
}

public MyClass(int SomeValue, int SomeOtherValue) : this()
{ 

   field1 = SomeValue;
   field2 = SomeOtherValue;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8200799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档