C#入门--字段与属性

  “字段”,它是包含在结构中的对象或值。字段使类和结构可以封装数据。

  属性是这样的成员:它们提供灵活的机制来读取、编写或计算私有字段的值。可以像使用公共数据成员一样使用属性,但实际上它们是称为“访问器”的特殊方法。这使得数据在可被轻松访问的同时,仍能提供方法的安全性和灵活性。

public class Program
{
private int _number; //_number为字段 public int Number //Number 为属性
{
get { return _number ;}
set { _number = value ;}
} }

  从上面的例子可以明显看出,字段就是变量,而属性就是字段的访问方式(通常字段是private,属性是public),这类似于C++,申明一个private 类型的变量x,通过 GetX()与SetX()函数来对x进行操作。而这里的属性就是将这两个函数合在一起通过set与get关键字对相应的字段进行处理。

  属性的出现,极大的简化了我们的编码工作。与C++和Java比较一下,你会发现我们不必为了一个字段而专门写两个函数(虽然这些函数很简单),而且使得代码编的更简洁,更易读,更易改。

  当然,属性也可对字段进行一些处理(例如返回字段时判断其是否为空,对字段进行赋值时判断value是否有效等简单或者其它更复杂的操作)。也可以设置属性的访问权限(如只读,只写,可读可写,不可读不可写)。而且现在的C#版本已经支持自动属性,即不必为属性指定字段,如 public int Number {get;set;} 这样就可以申明一个属性,编译器会为其自动分配一个字段(编译时),总之通过属性,可以极大的简化我们的操作,使得代码的可读性更高,可维护性更高。下面让我们通过一些例子来深入理解属性的作用。

    public class Program
{
private static string _number; public static string Number //非自动属性,可读可写
{
get
{
if (_number == null)
return Convert.ToString(new NullReferenceException());
return _number; }
set
{
string temp = "";
foreach (var ch in value)
{
if (char.IsDigit(ch))
temp += ch;
}
_number = temp;
}
} public static string ReadWrite { get; set; } //自动属性,可读可写 public static string ReadOnly { get { return ""; }} //自动属性,只读 private static string _writeOnly; public static string WriteOnly { set { _writeOnly = value; } } //非自动属性,只写 public static void Main(string[] args)
{
Number = "23kljk3j423903kj43kj432kj";
ReadWrite = "ReadWrite";
//ReadOnly = "ReadOnly"; //报错,此属性只读
WriteOnly = "WriteOnly"; Console.WriteLine(Number);
Console.WriteLine(ReadWrite);
Console.WriteLine(ReadOnly);
//Console.WriteLine(WriteOnly); //报错,此属性只写
Console.ReadKey();
}
} //Results:
//23342390343432
//ReadWrite
//

C#入门--字段与属性的更多相关文章

  1. C#——字段和属性

    //我的C#是跟着猛哥(刘铁猛)(算是我的正式老师)<C#语言入门详解>学习的,微信上猛哥也给我讲解了一些不懂得地方,对于我来说简直是一笔巨额财富,难得良师! 在刚开始学习属性这一节时,开 ...

  2. [.net 面向对象编程基础] (10) 类的成员(字段、属性、方法)

    [.net 面向对象编程基础] (10) 类的成员(字段.属性.方法) 前面定义的Person的类,里面的成员包括:字段.属性.方法.事件等,此外,前面说的嵌套类也是类的成员. a.类的成员为分:静态 ...

  3. .NET面试题解析(05)-常量、字段、属性、特性与委托

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 弱小和无知不是生存的障碍,傲慢才是!——<三体> 常见面试题目: 1. const和reado ...

  4. C#.NET如何不序列化字段、属性

    当我们使用公开属性以及公开字段时,都可以顺利的被序列化, 01.[Serializable] 02.public class MyClass 03.{ 04.    public int ID; 05 ...

  5. mysql字段额外属性,除去字段类型外的其他属性

    如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错. AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自 ...

  6. 不允许修改SQLserver2008r2表中字段的属性问题

    SQLserver2008r2修改表中字段的属性时弹出 点击工具->选项,取消阻止保存要求重新创建表的更改

  7. C#:字段与属性

    MSDN中是这么介绍字段和属性的: A field is a variable of any type that is declared directly in a class or struct. ...

  8. 1.4.2 solr字段类型--(1.4.2.1)字段类型定义和字段类型属性

    1.4.2 solr字段类型 (1.4.2.1) 字段类型定义和字段类型属性. (1.4.2.2) solr附带的字段类型 (1.4.2.3) 使用货币和汇率 (1.4.2.4) 使用Dates(日期 ...

  9. C# 字段、属性、成员变量

    引言: C#与java,C++中的这些基本概念略有不同. 由于easy混淆,所以这里总结下差别. 希望能对刚開始学习的人有帮助! 一.定义与作用 1.字段(field):是C#类级别定义的,和方法同一 ...

随机推荐

  1. Java开发环境配置(JDK+Tomcat+MyEclipsed)

    前言 这个项目一开始,我只能说我把自己整的很无语,所以我只能在调整心态的基础上,重新把思路缕了一遍,好了,接下来就说java运行环境以及发布运行方法还有SSH环境配置. 内容 本次配置用到的安装包: ...

  2. 51nod1445(最短路)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1445 题意: 中文题诶~ 思路: 可以将每种颜色看作一个节点 ...

  3. 【BZOJ 3326】[Scoi2013]数数

    题目描述 Fish 是一条生活在海里的鱼,有一天他很无聊,就开始数数玩.他数数玩的具体规则是: 确定数数的进制B 确定一个数数的区间[L, R] 对于[L, R] 间的每一个数,把该数视为一个字符串, ...

  4. socket 释放全过程

    1.close()函数:立即返回到进程 int close(int sockfd);     //返回成功为0,出错为-1. close 一个套接字的默认行为是把套接字标记为已关闭,然后立即返回到调用 ...

  5. matplotlib类

    1.plt.subplot 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplot(numRows, numCo ...

  6. iperf简单说明

    1.官网下载安装包 https://iperf.fr/iperf-download.php 2.安装(根据下载包的类型进行安装) 3.参数说明服务端(默认监听端口5201) iperf -s -u - ...

  7. BZOJ 3083 遥远的国度 树链剖分+脑子

    唉..又调了半天QWQ..为何读入挂了.....莫非读入是反着的????据ywy学长所言如是...OvO震惊 这啥骚题啊...还要换根...不过清明讲过...(然鹅我现在才做... 先随便选个点(比如 ...

  8. 华东交通大学2015年ACM“双基”程序设计竞赛1001

    Problem A Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...

  9. css过渡transition

    定义 过渡transition是一个复合属性,包括transition-property.transition-duration.transition-timing-function.transiti ...

  10. 爬虫初识和request使用

    一.什么是爬虫 爬虫的概念: 通过编写程序,模拟浏览器上网,让其去互联网上爬取数据的过程. 爬虫的工作流程: 模拟浏览器发送请求->下载网页代码->只提取有用的数据->存放于数据库或 ...