C# get和set

rxewe 2012-03-28 01:22:06
class TimePeriod
{
private double seconds;

public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}

c#里这种get,set很多,直接用
class TimePeriod
{
private double seconds;

public double Hours;
}

不行吗,用get,set有什么好处吗?
...全文
551 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
色拉油 2012-03-28
  • 打赏
  • 举报
回复
方便,封装
jayrao5566 2012-03-28
  • 打赏
  • 举报
回复
数据封装.
westfly5 2012-03-28
  • 打赏
  • 举报
回复
封装属性
LOVE_GG 2012-03-28
  • 打赏
  • 举报
回复
虽然一直在用,但是没有想过这么多。学习了
jxwangjm 2012-03-28
  • 打赏
  • 举报
回复
有一种情形是Field所不能做到,比如
private List<Items> m_items;
public Int32 count{get{return m_items.Count;}}
-不过也可以用public Int32 count()能做,不过写法上有些不同,好像Java中是没有属性这一概念
OHHMessager 2012-03-28
  • 打赏
  • 举报
回复
get\set 为类属性, 主要是为了封装和赋值使用, 也可以根据get、set,让访问权限得到控制,即只能读取用get、只能赋值用set或两者都可以用 get、set
hetengfei_ 2012-03-28
  • 打赏
  • 举报
回复
上面的用法:
叫 对象的“索引
hetengfei_ 2012-03-28
  • 打赏
  • 举报
回复
当然
get set
也可以 做// 虚构的二维 数组
// 虚构的二维 数组
public class TowArray
{
public List<List<object>> data = new List<List<object>>();

public object this[int index1, int index2]
{
get
{
if (index1 < data.Count && index2 < data[index1].Count)
{
return data[index1][index2];
}
else
{
return null;
}
}
set
{
while (index1 >= data.Count)
{
data.Add(new List<object>());
}
while (index2 >= data[index1].Count)
{
data[index1].Add(null);
}
data[index1][index2] = value;
}
}
}
hetengfei_ 2012-03-28
  • 打赏
  • 举报
回复
class TimePeriod
{
private double seconds;

public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}

与下面的写法相似,只是用get set 来写要快一点。
class TimePeriod
{
private double seconds;

public double setHours(double h)
{
this.seconds = h* 3600;
}
public double getHours()
{
return this.seconds /3600;
}
}

get,set 被大家称为属性,
你直接写叫字段,
用我上面的写法叫方法,


这三种东东,是C#对象特有的东东。
mikebai 2012-03-28
  • 打赏
  • 举报
回复
如果没有定制性的处理的话,又不用考虑内外区分的话,
没啥区别
porschev 2012-03-28
  • 打赏
  • 举报
回复

set、get用于访问私有变量

类中的属性一般设置可访问性为private

get set为了给外部使用开放一个有限的可以访问私有变量的方法
孟子E章 2012-03-28
  • 打赏
  • 举报
回复
set get还可以控制的更多,如只读,只写等控制
你可以参考
http://msdn.microsoft.com/zh-cn/library/w86s7x04%28VS.80%29.aspx
http://msdn.microsoft.com/zh-cn/library/75e8y5dd%28VS.80%29.aspx
传递正能量 2012-03-28
  • 打赏
  • 举报
回复
封装

为了变化



class TimePeriod
{
private double seconds;

public double Hours;
}


其他调用 TimePeriod。Hours,当Hours需要变化的时候i,他是不能骗人的,所以所有引用的地方都需要变化

class TimePeriod
{
private double seconds;

public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}

当Hours需要变化的时候,只需要改get,set的代码,所有引用的地方都不需要变化
bdmh 2012-03-28
  • 打赏
  • 举报
回复
面向对象,对内部属性起一个封装,而且还可以做更多的事情和判断,不仅仅是给变量赋值

111,092

社区成员

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

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

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