讨论类的私有变量是否也以属性的方式使用呢?

火星熊猫 2009-12-13 08:22:51
	public class A
{
//定义
private int b;
private byte[] c;
//定义

//属性
private int B
{
get { return b; }
set { b = value; }
}

private byte[] C
{
get { return c; }
}
//属性

//公有方法
public A()
{

}

public void D()
{
B = xx; //这么写好
b = xx; //还是这么写好
}
//公有方法
}


假设有上面这么一个类A,定义了私有变量b。在类的内部是直接使用b变量好呢?还是使用b的属性接口好呢?
如果是使用属性接口,那么需要开放B的get操作,但是不开放set操作,也就是外部类只能get,类内部可以get也可以set,应该怎么实现?
		public int B
{
public get { return b; }
private set { b = value; }
}


上面这段代码编译不能,有没有办法可以实现类似的功能?
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tbinjiayou 2009-12-13
  • 打赏
  • 举报
回复
虽然有专家说过无论是在类内部还是被其他类调用,都应该使用属性。因为封装性原则,而且属性可以对非法字段进行验证。我也是这么认为,当属性有验证存在时,应该使用属性而不应该使用字段。但是如果只需部分公开属性时,我认为这时可以考虑直接使用字段。
RYAN--333 2009-12-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yeqiufeng 的回复:]
其实没什么鸟意思。

怎么高兴怎么写呗。

砖家堆砌起来的理论,你可能一生都遇不到。
[/Quote]
akey307 2009-12-13
  • 打赏
  • 举报
回复
code=C#]
public int B
{
get
{
return b;
}

private set
{
b = value;
}
}
[/code]
「已注销」 2009-12-13
  • 打赏
  • 举报
回复
其实没什么鸟意思。

怎么高兴怎么写呗。

砖家堆砌起来的理论,你可能一生都遇不到。
soaringbird 2009-12-13
  • 打赏
  • 举报
回复
public int B
{
get { return b; }
private set { b = value; }
}
kssys 2009-12-13
  • 打赏
  • 举报
回复
属性和变量的区别在于,给属性取值/赋值的时候可以进行额外的操作。因此是否用以属性或变量使用,主要取决于你的需要。
bwangel 2009-12-13
  • 打赏
  • 举报
回复
不一定需要钻那个牛角尖吧. 只要达到目的,不必拘泥于形式.

public int B
{ get {return b;}}

private int SetB
{ set { b=value;} }

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧