菜鸟问题,关于set与get。

wsdydmw 2009-11-30 06:09:18

public class data
{
private int a;

public int a//用这个方法有什么作用呢
{
get{return a;}
set{a=value;}
}
}
public test
{
public static void main()
{
data mydata=new data();
mydata.a=3;
}
}

这种用法有什么作用呢?
zhegen
...全文
135 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
benbenRH 2009-12-01
  • 打赏
  • 举报
回复
string name;

string 名字
{
get
{
return name;
}
set
{
messageBox.show("公安局,我的名字改变了");
name=value;
}

}
sinodzh 2009-12-01
  • 打赏
  • 举报
回复
java没有属性。
c#引进了属性。c#的架构师是java之父。ms挖过来的。
他自己都说了。属性虽然破坏了封装性。但是程序的效率大大的提升。所以属性是.net最基本最重要的一个特性了。
long502481209 2009-11-30
  • 打赏
  • 举报
回复
把私用字段变成公用字段
get 是获得数据
set 是设置数据
hahayanjing 2009-11-30
  • 打赏
  • 举报
回复
10楼

很详细

我也是听我老师说的
只记住这么多
hahayanjing 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wsdydmw 的回复:]
为什么不直接写成public int value呢
[/Quote]

安全性 较高
设置 两个访问器 一个 赋值 一个传值
因为在不同的类里面 另外的类 不能改变他的值
用get 和set 就可以给他赋值了
Justin-Liu 2009-11-30
  • 打赏
  • 举报
回复
封装 保护私有字段 自定制性
wuyq11 2009-11-30
  • 打赏
  • 举报
回复
尽可能的使用属性(property),而不是数据成员(field)。
把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量。
属性的实质是方法(get和set方法),数据安全
Get/Set访问器
只带有 get 访问器的属性称为只读属性。无法对只读属性赋值。
只带有 set 访问器的属性称为只写属性。只写属性除作为赋值的目标外,无法对其进行引用。
同时带有 get 和 set 访问器的属性为读写属性。
get 和 set 访问器都必须在属性体的内部声明。
饺子87 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sdfkfkd 的回复:]
还有一个好处是你赋值 前可以进行数据验证
C# codeprivatestring name;publicstring Name
{get {return name; }set
{if(!string.IsNullOrEmpty(value)){name=value;}else {thrownew Exception("你没有名字啊,名字不能为空你不知道啊?" );}
}
}
引用 4 楼 forsiny 的回复:
这种用属性的方法可以方便的实现私有字段的封装和隐藏。

比如对只读数据可以这样保护:

C# codeprivatestring name;publicstring Name 
  {get    {return name;    } 
  }

[/Quote]

这个举例不错。
我认为属性而不用变量的原因有两点:
1.保护数据,只暴露需要的访问级别
2.维护数据,可以在读写过程中作判断、触发事件等
xpolice_wj 2009-11-30
  • 打赏
  • 举报
回复
学习
特别 2009-11-30
  • 打赏
  • 举报
回复
如果你这个属性没啥特别处理,就是赋值取值的话,
当然可以用字段,public int value
不过,一般习惯用属性来封装
stning 2009-11-30
  • 打赏
  • 举报
回复
你看看msdn吧,属性和变量
特别 2009-11-30
  • 打赏
  • 举报
回复
还有一个好处是你赋值 前可以进行数据验证

private string name;
public string Name
{
get { return name; }
set
{
if(!string.IsNullOrEmpty(value)){name=value;}
else {throw new Exception( "你没有名字啊,名字不能为空你不知道啊?" );}
}
}


[Quote=引用 4 楼 forsiny 的回复:]
这种用属性的方法可以方便的实现私有字段的封装和隐藏。

比如对只读数据可以这样保护:

C# codeprivatestring name;publicstring Name
{get {return name; }
}
[/Quote]
forsiny 2009-11-30
  • 打赏
  • 举报
回复

这种用属性的方法可以方便的实现私有字段的封装和隐藏。

比如对只读数据可以这样保护:


private string name;
public string Name
{
get { return name; }
}
fengling2001 2009-11-30
  • 打赏
  • 举报
回复
保护数据,原理和c++类似,数据的访问通过具体方法来实现。如果直接定义成public,类的数据封装性就被破坏了(c++的类,原则上数据成员是尽量不要定义成public)
wsdydmw 2009-11-30
  • 打赏
  • 举报
回复
为什么不直接写成public int value呢
卧_槽 2009-11-30
  • 打赏
  • 举报
回复
从之前的vc语法修改衍生而来。
以前,为了修改和获取类里面似有变量,很多时候这么写
private int Value=0;
然后写
public int GetValue()
{
return Value;
}

public void SetValue(int setvalue)
{
Value=setvalue;
}

C#语法中为了简化这种写法,就变成了你看到的get,set。

110,502

社区成员

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

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

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