C# 常量,变量,字段,属性,方法

时间:2022-06-28 08:20:53

常量:指在程序编译时已经存在且在程序生命周期内不会发生改变的值,用const定义一个常量。

private class TestA     --定义一个类时后边不加(

{

private const double Pi=3.14;

private double GetPi()   --输出pi值得方法,后边带()

{

double t=pi;

return t;

}

}

变量:

变量本身被用来存储特定类型的数据,可以根据需要随时改变变量中所存储的数据值。变量具有名称、类型和值。变量名是变量在程序源代码中的标识。变量类型确定它所            代表的内    存的大小和类型,变量值是指它所代表的内存块中的数据。在程序的执行过程中,变量的值可以发生变化。使用变量之前必须先声明变量,即指定变量的类型和            名称。 

变量可以存储值类型,也可以存储引用类型

值类型变量:直接存储其数据值,主要包括整数类型,浮点类型和布尔类型。

值类型变量在堆栈中进行分配,因此效率很高,使用值类型主要目的是为了提高性能,,主要分为以下3种值类型。   

(1)整数类型     

(2)浮点类型    

(3)布尔类型   

引用类型变量:存储的是其数据值得引用,引用类型变量可以引用同一对象,这种情形下,对一个变量的操作会影响另一个变量所引用的同一对象。  u引用类型被赋值前的            值都是null。

值类型和引用类型的区别:

public class Test

{

public int a=3;   --值类型变量

string ss="1234455":

public string sq=ss;   --引用类型变量

}   

在变量类型后添加“?”表示可空值类型。
例如:
into a=null;

以上代码VS会提示错误:无法将 Null 转换成 “int” ,因为它是一种不可以为 null 值的类型。

但写成以下格式就不会报错了:

int? a=null;

值类型直接存储其值,而引用类型存储对其值得引用。值类型存储在内存的栈中,而引用类型在内存的堆中存在对值得引用地址。

字段,属性

字段是构成类结构的一种元素,它不仅可以用C#内置类型进行声明,也可以用任意的自定义类型进行声明,很明显,它不仅可以保存一个值类型的实例,也可以保存一个引用类型的地址引用。字段可以直接定义在类或结构中。相比常量,它就多了一些特性,它不仅可以是类的状态数据,也可以是实例的状态数据,它默认并不是static,而是对象级的成员,除非明确指定其修饰符为static。字段可以使用的修饰符为: public、private、protected、internal 或 protected internal。另外,readonly也可以用于字段,如果再加上satic,此时它就相当于常量了,只不过对象级的字段初始化是在构造函数中进行的,类级的字段初始化是在静态构造函数中进行的。如下代码:

public class Code_03 { public const double PAI = 3.14; double radius = 20; static int a = 10; static readonly int b = 30; }

常量是在编译时计算,字段是在运行时计算,

const常量在声明处进行初始化,编译时直接将值编译进元数据,运行时不能进行值更改(如下面代码中的PAI)。

实例字段可在定义处和构造函数内进行初始化。可在任意处进行更改,如果其可访问性允许(如下面代码中的radius)。

static 字段声明为类级的字段,它属于类的状态数据。可在任意处进行更改,如果其可访问性允许(如下面代码中的a)。

readonly 字段声明只读字段,只能在构造函数内对其进行更改(如下面代码中的b)。

static readonly 字段声明静态只读字段,它属于类级且只读。只能在静态构造函数内对其更改(如下面代码中的c)。

1 public class Code_03 2 { 3 public const double PAI = 3.14; 4 double radius = 20; 5 static int a = 10; 6 readonly int b = 0; 7 static readonly int c = 30; 8 9 static Code_03() 10 { 11 a = 100; 12 c = 1000; 13 //错误 非静态的字段、方法或属性“ConsoleApp.Example03.Code_03.c”要求对象引用 14 //radius = 1; 15 //b = -1; 16 } 17 public Code_03() 18 { 19 radius = 1; 20 a = -1; 21 b = -1; 22 //错误 无法对静态只读字段赋值(静态构造函数或变量初始值中除外) 23 //c = -1; 24 } 25 public void MyMethod() 26 { 27 radius = 1; 28 a = -1; 29 //错误 无法对静态只读字段赋值(静态构造函数或变量初始值中除外) 30 //b = -1; 31 //c = -1; 32 } 33 }

View Code

属性: