一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

C#的值类型\值类型\引用类型\常量\变量\类型转换

时间:2015-06-16 编辑:简简单单 来源:一聚教程网

值类型

在前面一章中我们学习了一个简单的C#程序的主要构成,下面我们就来系统的学习的C#基础语法,首先学习的是数据类型中的值类型和引用类型,以及常变量。

  值类型可以归类如下:简单类型,结构类型,枚举类型。它们是从类 System.ValueType 中派生的。

  简单类型包括 整型(Intergral types)、小数型(Decimal types)、浮点型(Floating point types)、布尔型(Bool types)、字符型(Char types)。其中整型数据包含 int、 sbyte、 short、 ushort、 uint、 long、 ulong、 byte、char。

  结构类型(struct)可以声明构造函数、常数、字段、属性、方法、索引、操作符和嵌套类型,我们将会在结构一章中具体来讲。

  枚举类型(enum)是由一指定常量集合组成的独特的类型,我们也会在后面枚举一章中介绍。

  比如 int、char、float,它们分别存储数字、字母、浮点数。当您声明一个 int 类型时,系统分配内存来存储值。

  定义值类型的标识符还有bool, byte, decimal, double, long, sbyte, short, uint,ulong,ushort。

  我们想定义一个 int,char类型的变量并给它们赋值:

int a=5;    //定义一个int型变量并初始化;
char c='2'; //定义一个char型变量并初始化;

引用类型


  引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string。

  对象(Object)类型 是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类。Object 是 System.Object 类的别名。所以对象(Object)类型可以被分配任何其他类型的值。但是,在分配值之前,需要先进行类型转换。

  当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱。

object obj;
obj = 100;  // 这是装箱
  动态(Dynamic)类型可以存储任何类型的值,其定义方式为:dynamic = value; 例如下面代码:

dynamic d = 20;
  字符串(String)类型 允许您给变量分配任何字符串值。字符串(string)类型是 System.String 类的别名。它是从对象(Object)类型派生的。字符串(String)类型的值可以通过两种形式进行分配:引号和 @引号。

  C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如:

string str = @"C:\Windows";
等价于:

string str = "C:\\Windows";
  @字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

string str = @"";
     关于string我们后面还会具体介绍。

常量


常量就是其值固定不变的量。从数据类型角度看,常量的类型可以是任何一种值类型或引用类型。

  一个常量的声明就是声明程序中要用到的常量的名称和它的值。和变量一样,我们可以同时声明一个或多个给定类型的常量,常量的声明格式如下。

constant-modifier const type constant-declarators;
  其中,常量修饰符 constant-modifier 可以是这些:new、public、protected、internal、private。const是关键字,type可以是byte、short、int、uint、ulong、long、char …… 以及枚举类型或引用类型。

public const int MaxValue = 10
  整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制。

  一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

  字符常量是括在单引号里,例如,'x',且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 '\t')或者一个通用字符(例如 '\u02C0')。

  字符串常量是括在双引号 "" 里,或者是括在 @"" 里。

212         /* 合法 */
0xFeeL      /* 合法 */
85         /* 十进制 */
0213       /* 八进制 */
0x4b       /* 十六进制 */
30         /* int */
30u        /* 无符号 int */
30l        /* long */
30ul       /* 无符号 long */
3.14159       /* 合法 */
314159E-5L    /* 合法 */
\\             \ 字符
\'             ' 字符
\"             " 字符
\?             ? 字符
"hello"      hello字符串

变量

  一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。 如何定义变量呢?定义格式如下

data_type variable_list;
  在这里,data_type 必须是一个有效的 C# 数据类型,可以是 char、int、float、double 或其他用户自定义的数据类型。variable_list 可以由一个或多个用逗号分隔的标识符名称组成。

  变量可以在声明时被初始化(指定一个初始值)。初始化由一个等号后跟一个常量表达式组成。

int d = 3, f = 5;    /* 定义初始化 d 和 f */
byte z = 22;         /* 定义初始化 z */
double pi = 3.14159; /* 定义声明 pi 的近似值 */
char x = 'x';        /* 定义变量 x 的值为 'x' */

类型转换

在 C# 中,类型转换有两种形式:

  隐式类型转换 ——这些转换是 C# 默认的以安全方式进行的转换。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。

  显式类型转换 ——这些转换是通过用户使用预定义的函数显式完成的。显式转换需要强制转换运算符。

  强制转换的语法为: (data_type)variable; 其中括号不可以省略,data_type为要转换的类型说明符,variable为要转换的变量。

double d = 5673.74;
int i;
i = (int)d;   // 强制转换 double 为 int
执行结果为5673。

热门栏目