字段(C# 编程指南)
字段(C# 编程指南)
“字段”是直接在 类或 结构中声明的任何类型的变量。 字段是其包含类型的“成员”。
类或结构可以拥有实例字段或静态字段,或同时拥有两者。 实例字段特定于类型的实例。 如果您拥有类 T 和实例字段 F,可以创建类型 T 的两个对象,并修改每个对象中 F 的值,这不影响另一对象中的该值。 相比之下,静态字段属于类本身,在该类的所有实例中共享。 从实例 A 所做的更改将立刻呈现在实例 B 和 C 上(如果它们访问该字段)。
通常应仅为具有私有或受保护可访问性的变量使用字段。 您的类向客户端代码公开的数据应通过 方法、 属性和 索引器提供。 通过使用这些构造间接访问内部字段,可以针对无效的输入值提供防护。 存储由公共属性公开的数据的私有字段称为“后备存储”或“支持字段”。
字段通常存储这样的数据:该数据必须可供多个类方法访问,并且其存储期必须长于任何单个方法的生存期。 例如,表示日历日期的类可能有三个整数字段:一个表示月份,一个表示日期,还有一个表示年份。 不在单个方法范围外部使用的变量应在方法体自身范围内声明为局部变量。
在类块中通过指定字段的访问级别,然后指定字段的类型,再指定字段的名称来声明这些字段。 例如:
public class CalendarEntry
{// private fieldprivate DateTime date;// public field (Generally not recommended.)public string day;// Public property exposes date field safely.public DateTime Date {get {return date;}set {// Set some reasonable boundaries for likely birth dates.if (value.Year > 1900 && value.Year <= DateTime.Today.Year){date = value;}elsethrow new ArgumentOutOfRangeException();}}// Public method also exposes date field safely.// Example call: birthday.SetDate("1975, 6, 30");public void SetDate(string dateString){DateTime dt = Convert.ToDateTime(dateString);// Set some reasonable boundaries for likely birth dates.if (dt.Year > 1900 && dt.Year <= DateTime.Today.Year){date = dt;}elsethrow new ArgumentOutOfRangeException();}public TimeSpan GetTimeSpan(string dateString){DateTime dt = Convert.ToDateTime(dateString);if (dt != null && dt.Ticks < date.Ticks){return date - dt;}elsethrow new ArgumentOutOfRangeException(); }
}
若要访问对象中的字段,请在对象名称后面添加一个句点,然后添加该字段的名称,比如 objectname.fieldname。 例如:
CalendarEntry birthday = new CalendarEntry();
birthday.day = "Saturday";
声明字段时可以使用赋值运算符为字段指定一个初始值。 例如,若要自动将 "Monday" 赋给 day 字段,需要声明 day,如下例所示:
public class CalendarDateWithInitialization
{
public string day = "Monday";
//...
}
字段的初始化紧靠调用对象实例的构造函数之前。 如果构造函数为字段赋值,则该值将覆盖字段声明期间给出的任何值。 有关更多信息,请参见 使用构造函数(C# 编程指南)。
说明
字段初始值设定项不能引用其他实例字段。
字段可标记为 public、 private、 protected、 internal 或 protected internal。 这些访问修饰符定义类的使用者访问字段的方式。 有关更多信息,请参见 访问修饰符(C# 编程指南)。
可以选择将字段声明为 static。 这使得调用方在任何时候都能使用字段,即使类没有任何实例。 有关更多信息,请参见 静态类和静态类成员(C# 编程指南)。
可以将字段声明为 readonly。 只读字段只能在初始化期间或在构造函数中赋值。 static readonly 字段非常类似于常数,只不过 C# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问。 有关更多信息,请参见 常量(C# 编程指南)。
字段(C# 编程指南)相关推荐
- hive编程指南电子版_第三篇|Spark SQL编程指南
在<第二篇|Spark Core编程指南>一文中,对Spark的核心模块进行了讲解.本文将讨论Spark的另外一个重要模块--Spark SQL,Spark SQL是在Shark的基础之上 ...
- libuv 中文编程指南
最近看了一些有关 libuv 的东西,另外复习了一些与同步.异步.阻塞.非阻塞,异步IO(aio)的东西, 算是技术积累吧,等有时间了整理出一个完整的文档出来,希望在今后的编程中用到. 不多说了,本文 ...
- 《javascript面向对象编程指南》读书笔记
<javascript面向对象编程指南>读书笔记 <javascript面向对象编程指南>读书笔记 第一章 面向对象的JavaScript 第二章 基本数据类型与流程控制 变量 ...
- 《Linux与unix Shell编程指南》 总结
<Linux与unix Shell编程指南> 总结 标签: linux网络dstcron服务器 2011-01-10 18:27 3742人阅读 评论(0) 收藏 举报 分类: Linux ...
- storm-kafka编程指南
storm-kafka编程指南 @(STORM)[kafka, 大数据, storm] storm-kafka编程指南 一原理及关键步骤介绍 一使用storm-kafka的关键步骤 1创建ZkHost ...
- trident原理及编程指南
trident原理及编程指南 @(STORM)[storm, 大数据] trident原理及编程指南 一理论介绍 一trident是什么 二trident处理单位 三事务类型 1spout类型 2st ...
- Spark编程指南V1.4.0(翻译)
Spark编程指南V1.4.0 · 简介 · 接入Spark · Spark初始化 · 使用Shell · 在集群上部署代码 · ...
- spark-sql建表语句限制_第三篇|Spark SQL编程指南
在<第二篇|Spark Core编程指南>一文中,对Spark的核心模块进行了讲解.本文将讨论Spark的另外一个重要模块--Spark SQL,Spark SQL是在Shark的基础之上 ...
- 多线程编程指南 part 2
多线程编程指南 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA95054 U.S.A. 文件号码819–7051–10 2006 ...
最新文章
- 记录一次基于LV块做存储介质的KVM扩容过程
- mysql 查询 插入
- 2022年改变数据中心行业的八大趋势
- Android studio的Activity详解
- 轻量级ORM框架 【Dapper】 的使用
- 算法篇【枚举2 -- 生理周期】
- HA3、iGraph和DII服务框架统一之战
- 一辆车撞到一位女孩的各种拍摄手法
- Python教程_1_引言
- 散粉在哪个步骤用_如何正确的使用散粉
- Confluence 6 配置边栏
- html5 go语言运行环境,GO语言环境搭建 及 helloworld开发
- Python信息轰炸
- 正则限定开头和取反 (否)
- DAY1(02-HTML标签(上))
- java.lang.Byte cannot be cast to java.lang.Integer,sql 到 java 类型转换遇到的问题
- 一名优秀的数据科学家,需要具备哪些基本能力?
- 盛元广通医院实验室设备预约管理系统
- 比MySQL快839倍!揭开分析型数据库JCHDB的神秘面纱
- 爱分析访谈阿博茨CEO杨永智:从感知到认知,阿博茨用AI解放金融民工
热门文章
- 图片分类 猫狗大战 pytorch VGG
- html设置文本框只读属性,juqery/js/css设置文本框只读属性的方法
- 帆软问题记录:数据可预览,但是数据集正在加载
- Linux上安装Redis+PHP安装Redis扩展
- C语言初步-第24讲:if语句的嵌套(个人所得税计算器if语句版)
- c语言有algorithm头文件吗,简单谈谈C++ 头文件系列之(algorithm)
- 数据库之概述模型: 对象模型 + 关系模型
- 【51单片机】【8*8 LED矩阵如何开发】【点亮一个led却出现一列全部点亮问题解决】
- 快速上手 Rook,入门云原生存储编排
- 运算放大器的稳定性分析(二)