值类型(value types)数据长度固定,存放于栈内,其存放的是真正的数值。
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
sbyte | 8 位有符号整数 | -128 到 127 | 0 |
short | 16 位有符号整数(两个 short 类型的数相乘,返回的是 int 型,因为结果可能大于 32767) | -32768~32767 | 0 |
int |
32 位有符号整数
|
-2,147,483,648 到 2,147,483,647 | 0 |
long | 64 位有符号整数 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | 0L |
byte | 8位无符号整数 | 0 到 255 | 0 |
ushort | 16 位无符号整数 | 0 到 65,535 | 0 |
uint |
32 位无符号整数
可以在字面值后面添加后缀,来指定想要的类型:
|
0 到 4,294,967,295 | 0 |
ulong |
64 位无符号整数
可以在字面值后面添加后缀,来指定想要的类型:
|
0 到 18,446,744,073,709,551,615 | 0 |
浮点类型中,只有 float 能隐式转换成 double,另外 decimal 与 float、double 之间不能隐式转换。
类型 | 描述 | 范围 | 默认值 |
---|---|---|---|
float | 32 位单精度浮点型(给 float 类型赋值小数,会默认转成 double,需要在小数后面加后缀,比如:float = 1.1F,这样才能正确声明一个 float 类型的变量) | -3.4 x 1038; 到 + 3.4 x 1038 | 0.0F |
double | 64 位双精度浮点型 | (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 | 0.0D |
decimal | 128 位精确的十进制值,28-29 有效位数 | (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 | 0.0M |
字符类型用于表示单个 Unicode 字符,占用 2 个字节(16 位),能表示从 U+0000 到 U+FFFF 范围内的字符。
字符用单引号 ' ' 包围,例如,char letter = 'A'; 。
转义字符 | 含义 | Unicode值 |
---|---|---|
\' | 单引号 | 0x0027 |
\" | 双引号 | 0x0022 |
\\ | 反斜杠 | 0x005C |
\0 | 空字符 | 0x0000 |
\a | 警告 | |
\b | 退格符 | |
\f | 换页符 | |
\n | 换行符 | |
\r | 回车符 | 0x000D |
\t | 水平制表符 | |
\v | 垂直制表符 |
'\u0022' + "hello" + '\u0022',最终的结果就是 "hello",\u0022 就代表双引号,0x 用 \u 代替。
// 获取剪贴板里的内容
string pastTest = Clipboard.GetText();
char[] charbuffers = pastTest.ToCharArray();
byte[] buffer;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < charbuffers.Length; i++)
{
buffer = System.Text.Encoding.Unicode.GetBytes(charbuffers[i].ToString());
sb.Append(String.Format("\\u{0:X2}{1:X2}", buffer[1], buffer[0]));
}
MessageBox.Show(sb.ToString());
char.IsWhiteSpace(cha); // 判断字符是不是空格
char.IsLetter(cha); // 判断是不是字母(中文也属于字母)
char.IsDigit(cha); // 判断是不是数字
char.IsLetterOrDigit(cha); // 判断是不是字母或数字(中文也属于字母)
char.IsLower(cha); // 判断是不是小写字母
char.IsUpper(cha); // 判断是不是大写字母
char.IsPunctuation(cha); // 判断是不是标点
char.IsSeparator(cha); // 判断是不是分隔符
char.ToLower(cha); // 转为小写字母
char.ToUpper(cha); // 转为大写字母
bool 类型通常用于逻辑判断和控制程序的流向,只有两个可能的值:true(真)和 false(假)。
结构与类相比,具有以下优点:
定义结构类型
public struct Student
{
public long sid; // 学号
public string firstName; // 名
public string lastName; // 姓
public double score; // 成绩
// 定义方法(结构中的方法不能包含 static 关键字)
public string GetName() //
{
return firstName+" "+lastName;
}
}
使用结构类型
Student mystudent;
mystudent.firstName="John";
mystudent.lastName="Franklin";
Console.WriteLine(mystudent.GetName());
枚举其实是一个整数类型,用于定义一组基本的整数数据,并可以给每个整数指定一个便于记忆的名字。
枚举类型默认是 static 的,所以不能用 static 修饰。
public enum Week
{
Sunday=0, //这里是逗号,不是分号
Monday=1,
Tuesday=2,
Wedensday=3,
Thursday=4,
Friday=5,
Saturday=6
}
枚举的基本类型可以是 byte、sbyte、short、ushort、int、uint、long、ulong,每个值都会根据定义的顺序(从 0 开始),被自动赋予对应的基本类型值,比如 value1 的值是 0,value2 的值是 1,value3 的值是 2……
不能为整数类型、浮点类型、布尔类型的变量赋值 null。
string str = "hello world";
str = null; // 在设置 str 为 null 后,str 里的内容就全部被清空了。