学习笔记 03----C# 类型
【类型】
支持2种类型
【数据类型】包括一些简单类型(例如,char、int和float),枚举类型和结构类型。
【引用类型】包括类类型、接口类型、代表(delegate)类型和数组类型。
数据类型和引用类型的区别在于,数据类型变量直接包含它们的数据,然而引用类型数据是存储对于对象的引用。
对于引用类型,有可能两个变量引用相同的对象,因而可能出现对一个变量的操作影响到其它变量所引用对象的情况。
对于数据类型,每个变量都有它们自己对数据的拷贝,所以不太可能因为对一个进行操作而影响到其它变量。
【预定义类型】
预定义引用类型是对象和字符串。类型对象是所有其它类型的最根本的基础类型,而类型字符串要用来说明Unicode字符串数据。
预定义数据类型包括有符号和无符号整数类型、浮点数类型、二进制、字符和十进制类型。有符号整数类型有sbyte、short、int和long;无符号整数类型有byte、ushort、uint和ulong;而浮点类型有float和double。
预定义的类型及赋值:
类型 |
描述 |
例子 |
object |
所有其它类型的最根本的基础类型 |
object o = null; |
string |
字符串类型;一个字符传是一个Unicode字符序列 |
string s = "Hello"; |
sbyte |
8-bit 有符号整数类型 |
sbyte val = 12; |
short |
16-bit有符号整数类型 |
short val = 12; |
int |
32-bit 有符号整数类型 |
int val = 12; |
long |
64-bit有符号整数类型 |
long val1 = 12; |
byte |
8-bit 无符号整数类型 |
byte val1 = 12; |
ushort |
16-bit无符号整数类型 |
ushort val1 = 12; |
uint |
32-bit无符号整数类型 |
uint val1 = 12; |
ulong |
64-bit无符号整数类型 |
ulong val1 = 12; |
float |
单精度浮点数类型 |
float val = 1.23F; |
double |
双精度浮点数类型 |
double val1 = 1.23; |
bool |
二进制类型; 一个二进制数据不是真就是假 |
bool val1 = true; |
char |
字符类型; 一个字符数据是一个Unicode字符 |
char val = 'h'; |
decimal |
精确十进制类型,有28个有效位 |
decimal val = 1.23M; |
预定义类型可以允许操作符重载它们自己。例如,比较符==和!=对应不同的预定义类型有不同的语意:
- 如果两个int类型的表达式代表了相同的整数据,它们被认为是相等的。
- 如果两个object类型的表达式都指向相同的对象或者都是空的,它们被认为是相等的。
- 如果字符串实例有相同的长度并且在每个字符的位置都相同,或者都为空,这两个字符串类型的表达式就被认为是相等的。
例子
class Test
{
static void
string s = "Test";
string t = string.Copy(s);
Console.WriteLine(s == t);
Console.WriteLine((object)s == (object)t);
}
}
产生下面的输出
True
False
因为第一个比较符比较两个string类型的表达式,而第二个比较符比较两个object类型的表达式。