C# 属性(Property)

  属性(Property) 是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。

  属性(Property)不会确定存储位置。相反,它们具有可读写或计算它们值的 访问器(accessors)。

  例如,有一个名为 Student 的类,带有 age、name 和 code 的私有域。我们不能在类的范围以外直接访问这些域,但是我们可以拥有访问这些私有域的属性。

  访问器(Accessors)

  属性(Property)的访问器(accessor)包含有助于获取(读取或计算)或设置(写入)属性的可执行语句。访问器(accessor)声明可包含一个 get 访问器、一个 set 访问器,或者同时包含二者。例如:

  // 声明类型为 string 的 Code 属性

  public string Code

  {

  get

  {

  return code;

  }

  set

  {

  code = value;

  }

  }

  // 声明类型为 string 的 Name 属性

  public string Name

  {

  get

  {

  return name;

  }

  set

  {

  name = value;

  }

  }

  // 声明类型为 int 的 Age 属性

  public int Age

  {

  get

  {

  return age;

  }

  set

  {

  age = value;

  }

  }

  实例

  下面的实例演示了属性(Property)的用法:

  using System;

  namespace tutorialspoint

  {

  class Student

  {

  private string code = "N.A";

  private string name = "not known";

  private int age = 0;

  // 声明类型为 string 的 Code 属性

  public string Code

  {

  get

  {

  return code;

  }

  set

  {

  code = value;

  }

  }

  // 声明类型为 string 的 Name 属性

  public string Name

  {

  get

  {

  return name;

  }

  set

  {

  name = value;

  }

  }

  // 声明类型为 int 的 Age 属性

  public int Age

  {

  get

  {

  return age;

  }

  set

  {

  age = value;

  }

  }

  public override string ToString()

  {

  return "Code = " + Code +", Name = " + Name + ", Age = " + Age;

  }

  }

  class ExampleDemo

  {

  public static void Main()

  {

  // 创建一个新的 Student 对象

  Student s = new Student();

  // 设置 student 的 code、name 和 age

  s.Code = "001";

  s.Name = "Zara";

  s.Age = 9;

  Console.WriteLine("Student Info: {0}", s);

  // 增加年龄

  s.Age += 1;

  Console.WriteLine("Student Info: {0}", s);

  Console.ReadKey();

  }

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  Student Info: Code = 001, Name = Zara, Age = 9

  Student Info: Code = 001, Name = Zara, Age = 10

  抽象属性(Abstract Properties)

  抽象类可拥有抽象属性,这些属性应在派生类中被实现。下面的程序说明了这点:

  using System;

  namespace tutorialspoint

  {

  public abstract class Person

  {

  public abstract string Name

  {

  get;

  set;

  }

  public abstract int Age

  {

  get;

  set;

  }

  }

  class Student : Person

  {

  private string code = "N.A";

  private string name = "N.A";

  private int age = 0;

  // 声明类型为 string 的 Code 属性

  public string Code

  {

  get

  {

  return code;

  }

  set

  {

  code = value;

  }

  }

  // 声明类型为 string 的 Name 属性

  public override string Name

  {

  get

  {

  return name;

  }

  set

  {

  name = value;

  }

  }

  // 声明类型为 int 的 Age 属性

  public override int Age

  {

  get

  {

  return age;

  }

  set

  {

  age = value;

  }

  }

  public override string ToString()

  {

  return "Code = " + Code +", Name = " + Name + ", Age = " + Age;

  }

  }

  class ExampleDemo

  {

  public static void Main()

  {

  // 创建一个新的 Student 对象

  Student s = new Student();

  // 设置 student 的 code、name 和 age

  s.Code = "001";

  s.Name = "Zara";

  s.Age = 9;

  Console.WriteLine("Student Info:- {0}", s);

  // 增加年龄

  s.Age += 1;

  Console.WriteLine("Student Info:- {0}", s);

  Console.ReadKey();

  }

  }

  }

  当上面的代码被编译和执行时,它会产生下列结果:

  Student Info: Code = 001, Name = Zara, Age = 9

  Student Info: Code = 001, Name = Zara, Age = 10

  本文转载自:w3cschool

  (编辑:雷林鹏 来源:网络)

雷林鹏分享:C# 属性(Property)的更多相关文章

  1. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建属性网格

    jQuery EasyUI 数据网格 - 创建属性网格 属性网格(property grid)带有一个内置的 expand(展开)/collapse(合并) 按钮,可以简单地为行分组.您可以简单地创建 ...

  2. 雷林鹏分享:XML 属性

    XML 属性 XML元素具有属性,类似 HTML. 属性(Attribute)提供有关元素的额外信息. XML 属性 在 HTML 中,属性提供有关元素的额外信息: 属性通常提供不属于数据组成部分的信 ...

  3. 雷林鹏分享:C# 反射(Reflection)

    C# 反射(Reflection) 反射(Reflection) 对象用于在运行时获取类型信息.该类位于 System.Reflection 命名空间中,可访问一个正在运行的程序的元数据. Syste ...

  4. 雷林鹏分享:C# 特性(Attribute)

    C# 特性(Attribute) 特性(Attribute)是用于在运行时传递程序中各种元素(比如类.方法.结构.枚举.组件等)的行为信息的声明性标签.您可以通过使用特性向程序添加声明性信息.一个声明 ...

  5. 雷林鹏分享:C# 索引器(Indexer)

    C# 索引器(Indexer) 索引器(Indexer) 允许一个对象可以像数组一样被索引.当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样.您可以使用数组 ...

  6. 雷林鹏分享:CodeIgniter 数据库操作

    在平时项目开发过程中,除了处理那些繁琐的逻辑过程外,还有一个重要的任务就是对数据库的操作处理.这里总结下自己平时使用CI过程中使用的如何对数据库进行操作处理. 在CI框架中,我们一般会把对数据库的操作 ...

  7. 雷林鹏分享:jQuery EasyUI 数据网格 - 设置冻结列

    jQuery EasyUI 数据网格 - 设置冻结列 本实例演示如何冻结一些列,当用户在网格上移动水平滚动条时,冻结列不能滚动到视图的外部. 为了冻结列,您需要定义 frozenColumns 属性. ...

  8. 雷林鹏分享:jQuery EasyUI 数据网格 - 动态改变列

    jQuery EasyUI 数据网格 - 动态改变列 数据网格(DataGrid)列可以使用 'columns' 属性简单地定义.如果您想动态地改变列,那根本没有问题.为了改变列,您可以重新调用dat ...

  9. 雷林鹏分享:jQuery EasyUI 数据网格 - 格式化列

    jQuery EasyUI 数据网格 - 格式化列 以下实例格式化在 easyui DataGrid 里的列数据,并使用自定义列的 formatter,如果价格小于 20 就将文本变为红色. 为了格式 ...

随机推荐

  1. c# 模拟get请求例子,演示Session会话状态。

    创建一个控制台 程序: using System; using System.Collections.Generic; using System.IO; using System.IO.Compres ...

  2. Python之路----内置函数补充与匿名函数

    内置函数补充:reversed()保留原列表,返回一个反向的迭代器 l = [1,2,3,4,5] l.reverse() print(l) l = [1,2,3,4,5] l2 = reversed ...

  3. MySQL Crash Course #06# Chapter 13. 14 GROUP BY. 子查询

    索引 理解 GROUP BY 过滤数据 vs. 过滤分组 GROUP BY 与 ORDER BY 之不成文的规定 子查询 vs. 联表查询 相关子查询和不相关子查询. 增量构造复杂查询 Always ...

  4. Python入门之python可变对象与不可变对象

    本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...

  5. jQuery 对象

    jQuery 对象 版权声明:未经博主授权,严禁转载分享 什么是 jQuery 对象 jQuery 对象是通过 jQuery 包装 DOM 对象后产生的对象. jQuery 对象是一个类数组对象. j ...

  6. Intel RDT

    首先 spec, 从671页看起 https://software.intel.com/sites/default/files/managed/a4/60/325384-sdm-vol-3abcd.p ...

  7. 使用dll,将image库开放出去

    这是很经典的想法了,但是如何来做,不经过摸索不知道细节.   最简单: dll处   #include "stdafx.h"   #ifdef _DEBUG #define new ...

  8. vim 开启我们的Python之旅

    1.在我们的Mac系统下打开“终端”,输入python,然后回车即可看到我们电脑是否安装了python,以及它的版本,这里我的是2.7.5版本,如果未安装请百度之.

  9. Windows Services 学习(转载)

    转载:http://blog.csdn.net/fakine/article/details/42107571 一.学习点滴 1.本机服务查看:services.msc /s2.服务手动安装(使用sc ...

  10. C++ 表示一个区间值得方法

    C++中不允许这样的写法 85<= score <=100;你要想表示85<=score<=100的话只能这么写score>=85&&score<= ...