HWH....

导航

 

C# 是强类型语言;因此每个变量和对象都必须具有声明类型。

数据类型概述   

数据类型可描述为:
内置数据类型,如 int 或 char,
用户定义数据类型,如 class 或 interface。
数据类型还可以定义为:
值类型(用于存储值),
引用类型(用于存储对实际数据的引用)。

值类型

值类型主要由两类组成:

结构

  1. 结构是值类型,而类是引用类型。
  2. 与类不同,结构的实例化可以不使用 new 运算符。
  3. 结构可以声明构造函数,但它们必须带参数。(为什么不能没有参数,上面有答案)
  4. 一个结构不能从另一个结构或类继承,而且不能作为一个类的基。所有结构都直接继承自 System.ValueType,后者继承自 System.Object
  5. 结构可以实现接口。

枚举

enum 关键字用于声明枚举,即一种由一组称为枚举数列表的命名常数(是常数)组成的独特类型,
每种枚举类型都有基础类型,该类型可以是除 char 以外的任何整型,
枚举元素的默认基础类型为 int。默认情况下,第一个枚举数的值为 0,后面每个枚举数的值依次递增 1,
枚举数可以具有重写默认值的初始值设定项:
 enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};
在此枚举中,强制元素序列从 1 而不是 0 开始。
将 System.FlagsAttribute 应用于某个枚举时,如果该枚举包含一些使用按位“或”运算组合的元素,这时您会注意到该属性在用于某些工具时会影响 enum 的行为
// enumFlags.cs
// Using the FlagsAttribute on enumerations.
using System;

[Flags]
public enum CarOptions
{
SunRoof
= 0x01,
Spoiler
= 0x02,
FogLights
= 0x04,
TintedWindows
= 0x08,
}

class FlagTest
{
static void Main()
{
CarOptions options
= CarOptions.SunRoof | CarOptions.FogLights;
Console.WriteLine(options);
Console.WriteLine((
int)options);
}
}

 


输出

SunRoof, FogLights
5
请注意,如果移除 FlagsAttribute,此示例的输出为:

5

5

值类型的主要功能

基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。

所有的值类型均隐式派生自 System.ValueType。

与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。

与引用类型不同,值类型不可能包含 null 值。然而,可空类型功能允许将 null 赋给值类型。

每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。有关值类型默认值的信息,请参见默认值表

有关格式化数字类型输出的信息,请参见格式化数值结果表
int myInt=0;=====>int myInt=new int();

引用类型  

引用类型的变量又称为对象,可存储对实际数据的引用。本节介绍以下用于声明引用类型的关键字:
  1. class
  2. interface
  3. delegate
重要的引用类型
object 类型在 .NET Framework 中是 Object 的别名。在 C# 的统一类型系统中,所有类型(预定义类型、用户定义类型、引用类型和值类型)都是直接或间接从 Object 继承的。可以将任何类型的值赋给 object 类型的变量。将值类型的变量转换为对象的过程称为“装箱”。将对象类型的变量转换为值类型的过程称为“取消装箱”。有关更多信息,请参见装箱和取消装箱

string 类型表示零或更多 Unicode 字符组成的序列。string 是 .NET Framework 中 String 的别名。

尽管 string 是引用类型,但定义相等运算符(== 和 !=)是为了比较 string 对象(而不是引用)的值

+ 运算符用于连接字符串:

用 @ 引起来的字符串以 @ 开头,并且也用双引号引起来。若要在一个用 @ 引起来的字符串中包括一个双引号,请使用两对双引号.




posted on 2010-12-01 17:15  HWH....  阅读(196)  评论(0编辑  收藏  举报