C#关键字(分类检索)
C# 关键字
abstract event new struct
as explicit null switch ba extern object this
bool fal operator throw break finally out true
byte fixed override try
ca float params typeof catch for private uint
char foreach protected ulong checked goto public unchecked class if readonly unsafe const implicit ref ushort continue in return using decimal int sbyte virtual default interface aled volatile delegate internal short void
do is sizeof while double lock stackalloc
el long static
enum namespace string
类型(C# 参考)更新:2007 年11 ⽉
C# 类型体系包含下列⼏种类别:
值类型
引⽤类型
指针类型
值类型的变量存储数据,⽽引⽤类型的变量存储对实际数据的引⽤。引⽤类型也称为对象。指针类型仅可⽤于unsafe模式。
通过装箱和取消装箱,可以将值类型转换为引⽤类型,然后再转换回值类型。除了装箱值类型外,⽆法将引⽤类型转换为值类型。
本节还介绍void类型。
值类型也可以为null,这意味着它们能存储其他⾮值状态。有关更多信息,请参见可以为null 的类型。
值类型(C# 参考)
值类型主要由两类组成:
结构
枚举
结构分为以下⼏类:
Numeric(数值)类型
o整型
o浮点型
o decimal
bool
⽤户定义的结构。
值类型的主要功能
基于值类型的变量直接包含值。将⼀个值类型变量赋给另⼀个值类型变量时,将复制包含的值。这与引⽤类型变量的赋值不同,引⽤类型变量的赋值只复制对对象的引⽤,⽽不复制对象本⾝。
所有的值类型均隐式派⽣⾃System.ValueType。
与引⽤类型不同,可以从值类型派⽣出新的类型。但与引⽤类型相同的是,结构也可以实现接⼝。
与引⽤类型不同,值类型⽆法包含null 值。然⽽,可译为null 的类型功能确实允许将null 赋给值类型。
每种值类型均有⼀个隐式的默认构造函数来初始化该类型的默认值。有关值类型的默认值的信息,请参见默认值表。
简单类型的主要功能
所有的简单类型(C# 语⾔的组成部分)均为 Framework 系统类型的别名。例如,int是System.Int32的别名。有关完整的别名列表,请参见内置类型表(C# 参考)。
编译时计算操作数均为简单类型常数的常数表达式。
可使⽤⽂字初始化简单类型。例如,“A”是char 类型的⽂字,⽽2001 是int 类型的⽂字。
初始化值类型
在使⽤C# 中的局部变量之前,必须对其进⾏初始化。例如,可能声明未进⾏初始化的局部变量,如以下⽰例所⽰:
复制
int myInt;
那么在将其初始化之前,⽆法使⽤此变量。可使⽤下列语句将其初始化:
复制
myInt = new int(); // Invoke default constructor for int type.
此语句是下列语句的等效语句:
复制
myInt = 0; // Assign an initial value, 0 in this example.
当然,可以⽤同⼀个语句进⾏声明和初始化,如下⾯⽰例所⽰:
复制
int myInt = new int();
- 或-
复制
int myInt = 0;
使⽤new运算符时,将调⽤特定类型的默认构造函数并对变量赋以默认值。在上例中,默认构造函数将值0 赋给了myInt。有关通过调⽤默认构造函数所赋的值的更多信息,请参见默认值表。
对于⽤户定义的类型,使⽤new来调⽤默认构造函数。例如,下列语句调⽤了Point 结构的默认构造函数:
aviod复制皮肤干裂
魔女之家Point p = new Point(); // Invoke default constructor for the struct. 此调⽤后,该结构被认为已被明确赋值;也就是说该结构的所有成员均已初始化为各⾃的默认值。
有关new 运算符的更多信息,请参见new。
钢琴的声音
有关格式化数字类型输出的信息,请参见格式化数值结果表。
struct(C# 参考)
struct 类型是⼀种值类型,通常⽤来封装⼩型相关变量组,例如,矩形的坐标或库存商品的特征。下⾯的⽰例显⽰了⼀个简单的结构声明。
enum(C# 参考)
enum 关键字⽤于声明枚举,即⼀种由⼀组称为枚举数列表的命名常量组成的独特类型。
通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样⽅便地访问它。但是,还可以将枚举嵌套在类或结构中。
默认情况下,第⼀个枚举数的值为0,后⾯每个枚举数的值依次递增1。
整型表(C# 参考)
更新:2007 年11 ⽉
下表显⽰了整型的⼤⼩和范围,这些类型构成了简单类型的⼀个⼦集。
如果整数表⽰的值超出了ulong 的范围,将产⽣编译错误。
浮点型表(C# 参考)
更新:2007 年11 ⽉
下表显⽰了浮点型的精度和⼤致范围。
decimal(C# 参考)
好习惯手抄报更新:2007 年11 ⽉
decimal 关键字表⽰128 位数据类型。同浮点型相⽐,decimal 类型具有更⾼的精度和更⼩的范围,这使它适合于财务和货币计算。decimal 类型的⼤致范围和精度如下表所⽰。
⽂本
如果希望实数被视为decimal 类型,请使⽤后缀m 或M,例如:
复制
decimal myMoney = 300.5m;
如果没有后缀m,数字将被视为double类型,从⽽导致编译器错误。
蛇胆疮传染吗转换
整型被隐式转换为decimal,其计算结果为decimal。因此,可以⽤整数初始化⼗进制变量⽽不使⽤后缀,如下所⽰:
复制
decimal myMoney = 300;
中正锦城在浮点型和decimal 类型之间不存在隐式转换;因此,必须使⽤强制转换在这两种类型之间进⾏转换。例如:
复制
decimal myMoney = 99.9m;
double x = (double)myMoney;
myMoney = (decimal)x;
还可以在同⼀表达式中混合使⽤decimal 和数值整型。但是,不进⾏强制转换就混合使⽤decimal 和浮点型将导致编译错误。有关隐式数值转换的更多信息,请参见隐式数值转换表(C# 参考)。
有关显式数值转换的更多信息,请参见显式数值转换表(C# 参考)。
格式化⼗进制输出
可以通过使⽤String.Format ⽅法或Console.Write⽅法(它调⽤String.Format())来格式化结果。货币格式是使⽤标准货币格式字符串“C”或“c”指定的,如本⽂后⾯的第⼆个⽰例所⽰。有关String.Format ⽅法的更多信息,请参见String.Format。
⽰例
在此例中,同⼀个表达式中混合使⽤了decimal 和int。计算结果为decimal 类型。
下⾯的⽰例使⽤某个语句来尝试添加double和decimal 变量:
double x = 9;
Console.WriteLine(d + x); // Error
其结果是导致以下错误:
Operator '+' cannot be applied to operands of type 'double' and 'decimal'
public class TestDecimal
{
static void Main()
{桔子成人
decimal d = 9.1m;
int y = 3;
Console.WriteLine(d + y); // Result converted to decimal
}
}
// Output: 12.1
在此例中,使⽤了货币格式字符串来设置输出格式。注意:其中x 被舍⼊,因为其⼩数点位置超出了$0.99。⽽表⽰最⼤精确位数的变量y 严格按照正确的格式显⽰。
public class TestDecimalFormat
{
static void Main()
{
decimal x = 0.999m;
decimal y = 9999999999999999999999999999m;
Console.WriteLine("My amount = {0:C}", x);
Console.WriteLine("Your amount = {0:C}", y);
}
}
/* Output:
My amount = $1.00
Your amount = $9,999,999,999,999,999,999,999,999,999.00
*/