内置值类型的关键字、范围、大小、结构
关键字
bool
sbyte
byte
short
ushort
int
uint
long
ulong
decimal
char
double
float
结构
Boolean
SByte
Byte
Int16
UInt16
Int32
UInt32
Int64
UInt64
Decimal
Char
Double
Single
范围
true、false
-128到127 0到255-32768到32767
0到65535
-2,147,483,648到
2,147,483,647
0 到 4,294,967,295
-9,223,372,036,854,775,808 到
9,223,372,036,854,775,807
0 到 18,446,744,073,709,551,615
±1.0 x 10-28
至 ±7.9228 x 1028
U+0000
到 U+FFFF
±5.0 × 10−324
到 ±1.7 × 10308
±1.5 x 10−45
至 ±3.4 x 1038
大小
8位带符号
无符号8位
16位带符号
无符号16位
32带符号
无符号32位
64位带符号
无符号64位
16字节
16位
8字节
4字节
与Java不同,c#无包装类,bool是Boolean的别名,没什么区别。
string实例化时一般不需要用new,除非是使用字符数组初始化字符串。
1、string赋初始值时 string ="" 和 string = null不同 ,前者分配了内存,只是内存里的值为空字符串,后者并没有分配内存,推荐使用前者,避免引发NullReferenceException(尝试取消引用空对象引用时引发的异常)
2、string字符串对象不可变,而平时所见到的string a = "hello"; b = "world"; a += b; Console.WriteLine(a);所得到的结果为hello world ,只是重新创建了一个对象,并将字符串指向该新对象,并将原对象交给GC,所以需要常常用到字符串拼接的时候,不要使用string而是StringBuilder
3、正常打印时会有转义,所以需要注意转义字符
转义序列 | \' | \" | \\ | \0 | \a | \b | \f | \n | \r | \t | \v | \u | \U | \x |
字符名称 | 单引号 | 双引号 | 反斜杠 | null | 警报 | backspace | 换页 | 换行 | 回车 | 水平制表 | 垂直制表 | Unicode转义UTF-16 | Unicode转义UTF-32 | 可变长度其它同\u |
Unicode编码 | 0x0027 | 0x0022 | 0x005C | 0x0000 | 0x0007 | 0x0008 | 0x000C | 0x000A | 0x000D | 0x0009 | 0x000B | 0000-FFFF | 000000-10FFFF | 0-FFFF |
4、字符串内插
//推荐方法
string str1 = "hello", str2 = "world";
Console.WriteLine($"{str1},{str2}");
//output:hello,world
//不推荐的string.Format方法
Console.WriteLine(“{0},{1},yep”,str1,str2);
//output: hello,world,yep