C# Language Fundamentals

来源:互联网 发布:ps3游戏数据损坏 编辑:程序博客网 时间:2024/04/28 04:15

类型

C#语言的数据类型主要分为两类:
值类型和引用类型。

值类型又分为简单类型,结构(struct)和枚举(enum).

简单类型还可以细分为数值类型和布尔(bool)类型. C#语言中布尔类型严格地与数值类型区分,只有true和false两种取值,不存在像C/C++里那样和其他类型之间的转换,即没有非零为真的说法了.

 

   类型大小/字节.NET类型说明byte1Byte无符号(值0-255)char2CharUnicode字符bool1Boolean

true或者false

sbyte1SByte有符号(-128-127)short2Int16 ushort2UInt16 int4Int32 uint4UInt32 float4Single double8Double decimal16Decimal最大28位加小数点,要求加前缀M或者mlong8

Int64

 ulong8UInt64 

 

一些需要注意的地方:

    虽然C#将char定义为整型类型,但是它不能随意地在任何情况下与整数混用。这就意味着,在C#中把一个字符变量当作另外的整数数据类型看待是行不通的.

char ch;
ch=‘X';
ch=10;//error 

之所以不能这样使用,和类型的隐式(implicit)转换有关. 隐式转换只能发生在转换保证不损失信息的前提下,比如2字节的short转换为4字节的int, 上述语句试图将整形隐式转换为char类型,是不可以的,但是可以使用显式(explicit)转换:  ch=(char)10;

 

条件分支语句

case语句: 在case语句不为空时,不能向下执行,如下例:

case 1:  //可以向下执行

case 2:

因为这里case 1为空语句, 但是如果像下面这样:

case 1: 

      takesomeaction(); //不能向下执行

case 2:

这里case 1有一条语句,所以不能向下执行.如果需要case1 继续向下执行case2,必须显式使用goto 如下:

case 1:

    takesomeaction();

    goto case2 ;//显式向下执行

case 2:

 

 

条件编译

在编译代码之前,会运行预处理器(preprocessor),为编译器做一些准备工作,预处理器会检查代码, 寻找特殊的预处理器指令(directive),这些指令都以符号#开头,他们可以定义标识符,然后检查这些标识符是否存在.

 

#define DEBUG  定义了一个预处理器标识符DEBUG, 定义标识符必须在文件的最上面包括using之前.

 

# define DEBUG

 

#if DEBUG

//如果定义了DEBUG就编译此代码

#elif DEBUG1

//如果定义了DEBUG1就编译此代码

# else

//如果DEBUG和DEBUG1都没定义,则编译此代码

#endif

# undef DEBUG//取消定义DEBUG

原创粉丝点击