变量、字段、域、属性、属性过程

2022-12-06 12:22:12   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《变量、字段、域、属性、属性过程》,欢迎阅读!
属性,字段,变量,过程


C#中的变量、字段、域、属性、属性过程

C#中:

域: 表示与对象或类相关联的变量,修饰符不论是不是public。(与字段类似) 字段: 表示与对象或类相关联的变量。通常来讲修饰符是public的成员变量称为字段private更适合说是局部变量。(与域类似)

属性: 表示域或字段的自然扩展,使得在保证封装性的基础上实现了访问私有成员的便捷性。



域表示与对象或类相关联的变量,声明格式如下:

attributes field-modifiers type variable-declarators;

域的修饰符field-modifiers可以是:newpublicprotectedinternalprivatestaticreadonly。实际上,域相当于C++中的简单成员变量。在下面的代码中,类A包含了三个域:公有的XY,以及私有的z class A {

public int x; public string y; private float z; }

字段

字段是与对象或类相关联的变量。 当一个字段声明中含有static修饰符时,由该声明引入的字段为静态字段static field它只标识了一个存储位置。不管创建了多少个类实例,静态字段都只会有一个副本。 当一个字段声明中不含有static修饰符时,由该声明引入的字段为实例字段

instance field)。类的每个实例都包含了该类的所有实例字段的一个单独副本。 在下面的示例中,Color类的每个实例都有rgb实例字段的不同副本,但是BlackWhiteRedGreenBlue等静态字段只有一个副本: public class Color {

public static readonly Color Black = new Color(0, 0, 0);

public static readonly Color White = new Color(255, 255, 255); public static readonly Color Red = new Color(255, 0, 0); public static readonly Color Green = new Color(0, 255, 0); public static readonly Color Blue = new Color(0, 0, 255);

private byte r, g, b;

public Color(byte r, byte g, byte b) {






this.r = r; this.g = g; this.b = b; } }

如示例所示,通过readonly修饰符声明只读字段。readonly字段的赋值只能作为声明的组成部分出现,或者在同一类中的实例构造函数或静态构造函数中出现。

属性

为了类的封装性,一般是把字段设为Private 把属性设为公有来操作字段。

属性(property)是字段的自然扩展,两者都是具有关联类型的命名成员,而且访问字段和属性的语法是相同的。然而,属性与字段不同,不表示存储位置。相反,属性有访问器accessor),这些访问器指定在它们的值被读取或写入时需执行的语句。

属性的声明类似于字段,不同之处在于属性的声明以定界符{}之间的get访问器和/或set访问器结束,而不是分号。同时包含get访问器和set访问器的属性称为读写属性

read-write property)。只具有get访问器的属性称为只读属性(read-only property)。只具有set访问器的属性称为只写属性(write-only property)。

get访问器相当于一个具有属性类型返回值的无参数方法除了作为赋值的目标外,当在表达式中引用属性时,会调用该属性的get访问器以计算该属性的值。

set访问器相当于一个具有单个名为value的参数和无返回类型的方法当一个属性作为赋值的目标,或者作为++--运算符的操作数被引用时,就会调用set访问器,所传递的自变量将提供新值。

List类声明了两个属性CountCapacity,依次是只读和只写的。下面是使用这些属性的示例:

List names = new List();

names.Capacity = 100; //调用set访问器 int i = names.Count; //调用get访问器 int j = names.Capacity; //调用get访问器

与字段和方法类似,对于实例属性和静态属性,C#两者都支持。静态属性是声明中具有static修饰符,而实例属性则没有。

属性的访问器可以是虚拟的。当属性声明中包含virtualabstractoverride修饰符时,它们将运用到属性访问器。 来自MSDN中的内容:

属性与字段

属性与字段都可在对象中存储和检索信息它们的相似性使得在给定情况下很难确定哪个是更好的编程选择。

在以下情况下使用属性过程:




本文来源:https://www.wddqxz.cn/bfde7b1efc4ffe473368abb2.html

相关推荐