- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
详解C中的属性和属性的使用课案
详解C#中的属性和属性的使用属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法。这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性。在此示例中,TimePeriod 类存储时间段。该类在内部以秒为单位存储时间,但是名为 Hours 的属性允许客户端以小时为单位指定时间。 Hours 属性的访问器执行小时与秒之间的转换。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class TimePeriod
{
private double seconds;
public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
// Assigning the Hours property causes the set accessor to be called.
t.Hours = 24;
// Evaluating the Hours property causes the get accessor to be called.
System.Console.WriteLine(Time in hours: + t.Hours);
}
} 输出:
?
1 Time in hours: 24 表达式主体定义直接只返回表达式结果的属性很常见。下面的语法快捷方式使用 = 来定义这些属性:
?
1 public string Name = First + + Last; 属性必须为只读,并且你不能使用 get 访问器关键字。
使用属性属性结合了字段和方法的多个方面。对于对象的用户,属性显示为字段,访问该属性需要相同的语法。对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set 访问器的代码块。不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。
属性具有多种用法:它们可在允许更改前验证数据;它们可透明地公开某个类上的数据,该类的数据实际上是从其他源(例如数据库)检索到的;当数据被更改时,它们可采取行动,例如引发事件或更改其他字段的值。属性在类块中是按以下方式来声明的:指定字段的访问级别,接下来指定属性的类型和名称,然后跟上声明 get 访问器和/或 set 访问器的代码块。例如:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Date
{
private int month = 7; // Backing store
public int Month
{
get
{
return month;
}
set
{
if ((value 0) (value 13))
{
month = value;
}
}
}
} 在此示例中,Month 是作为属性声明的,这样 set 访问器可确保 Month 值设置为 1 和 12 之间。 Month 属性使用私有字段来跟踪该实际值。属性的数据的真实位置经常称为属性的“后备存储”。属性使用作为后备存储的私有字段是很常见的。将字段标记为私有可确保该字段只能通过调用属性来更改。
。get 访问器get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。例如,当正在从 get 访问器返回私有变量并且启用了优化时,对 get 访问器方法的调用由编译器进行内联,因此不存在方法调用的系统开销。然而,由于在编译时编译器不知道在运行时实际调用哪个方法,因此无法内联虚拟 get 访问器。以下是返回私有字段 name 的值的 get 访问器:
?
1
2
3
4
5
6
7
8
9
10
11 class Person
{
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
}
} 当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器以读取该属性的值。例如:
?
1
2
3
4 Person person = new P
您可能关注的文档
最近下载
- RAPTOR程序设计例题参考答案.docx
- 中国文化概况 Chapter 9 Culinary Culture 饮食茶酒文化 英文介绍 .ppt
- 山东黄金集团招聘笔试真题2023.pdf
- 高中英语教学课件:Unit 2 Mother of Ten thousand babies2.pptx
- 测测基础认证题库咨询师职业道德与守则考试题库答案-测测达人版.docx
- 部编版语文二年级上册第五单元大单元教学设计核心素养目标.pdf VIP
- 宁夏水洞沟电厂焊接专业施工组织设计.pdf VIP
- 园林植物识别与应用全套教学课件.pptx
- 必威体育精装版人教部编版道德与法治五年级上册《班委会的职责》教学课件.ppt
- 外墙保温旁站记录.docx VIP
文档评论(0)