struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。
public struct Book {
public decimal price;
public string title;
public string author;
}
结构还可以包含构造函数、常量、字段、方法、属性、索引器、运算符、事件和嵌套类型,但如果同时需要上述几种成员,则应当考虑改为使用类作为类型。
结构可以实现接口,但它们无法继承另一个结构。因此,结构成员无法声明为 protected。
2.常量
const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。例如:
const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";
常数表达式是在编译时可被完全计算的表达式。因此,对于引用类型的常数,可能的值只能是 string 和 null。
常数声明可以声明多个常数,例如:
public const double x = 1.0, y = 2.0, z = 3.0;
不允许在常数声明中使用 static 修饰符。
常数可以参与常数表达式,如下所示:
public const int c1 = 5;
public const int c2 = c1 + 100;
readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常数,而readonly 字段可用于运行时常数,如下面的代码行所示: 3.short整形类型 short 关键字表示一种整数数据类型,该类型根据下表显示的大小和范围存储值。
可如下例所示声明并初始化 short 类型的变量: short x = 32767; 在以上声明中,整数 使用 short 强制转换可保证调用正确的类型,例如: SampleMethod(5); // Calling the method with the int parameter SampleMethod((short)5); // Calling the method with the short parameter 存在从 short 到 int、long、float、double 或decimal 的预定义隐式转换。不能将存储大小更大的非文本数值类型隐式转换为short short x = 5, y = 12; 则 以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。
若要解决此问题,请使用强制转换:
但是,在目标变量具有相同或更大的存储大小时,使用下列语句是可能的: int m = x + y; long n = x + y; 不存在从浮点型到 short 的隐式转换。例如,除非使用显式强制转换,否则以下语句将生成一个编译器错误: short x = 3.0; // Error: no implicit conversion from double short y = (short)3.0; // OK: explicit conversion 4.委托(或者“代理”) 待完善这个!!!!!! 5.装箱 拆箱 装箱和拆箱使值类型能够被视为对象。对值类型装箱将把该值类型打包到 Object 引用类型的一个实例中。这使得值类型可以存储于垃圾回收堆中。如下,把整形值类型装箱成object引用类型。即整型变量
拆箱将从对象中提取值类型。然后,可以对对象
相对于简单的赋值而言,装箱和取消装箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。次之,取消装箱所需的强制转换也需要进行大量的计算。总之:拆箱和装箱的计算量比较大,尽量少使用。 6.for循环 int iSum = 1; 上述两个for循环的结果一样,都是求取1到n的阶乘。
|