02、C#预定义数据类型
一、数据类型分为值类型和引用类型。
二、内存空间有”栈“和”堆“,值类型是存在”栈“中的,引用的地址是存在”栈“中,值是放在”堆“中的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace C_shape { class Program { static void Main(string[] args) { //值类型实例 int x = 10; int y = x; Console.WriteLine("变量x的值为{0},变量y的值{1}",x,y); y = 20; Console.WriteLine("变量x的值为{0},变量y的值{1}", x, y); Console.ReadLine(); } } }
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace C_shape { class myclass { public int a = 100; } class Program { static void Main(string[] args) { //引用类型实例 myclass my1 = new myclass(); Console.WriteLine(my1.a); myclass my2 = my1; my2.a = 200; Console.WriteLine("my1={0},my2={1}", my1.a, my2.a); Console.ReadLine(); } } }
三、预定义类型
1、C#中有15个预定义类型,13个是值类型,2个是引用类型(string和object)。
大类 | 类型 | 范围 | 大小 | 定义方法 |
整型 | sbyte | -128~127 | 有符号8位整数 | |
byte | 0~255 | 无符号8位整数 | byte bt = 210; | |
char | U+0000~U+ffff | 16位Unicode字符 |
char a='a' char a='\u0041' |
|
short | -32768~32767 | 有符号16位整数 | ||
ushort | 0~65535 | 无符号16位整数 | ||
int | -2147483678~2147483647 | 有符号32位整数 | ||
uint | 0~4294967295 | 无符号32位整数 | uint ui = 1234U; | |
long | -9223372036854775808~9223372036854775807 | 有符号64位整数 | long lg = 1234L; | |
ulong | 0~18446744073709551615 | 无符号64位整数 | ulong ulg = 1234UL; | |
高精度类型 | float | -1.5e45~+3.4e38 | 精度7位 | float f =12.3F |
double | -5.0e324~+1.7e308 | 精度15到16位 | double price = 25D | |
decimal | -1.0*10-28~+7.9*1028 | 精度28到29位 | decimal d = 12.30M | |
布尔 | bool | true和false | true和false |
类型 | CTS类 | 描述 | 包含方法 | 定义方法 |
object | System.Object | 根类型,C#中所有类型都派生自本类 | Equals()、GetHashCode()、GetTy()、ToString() |
object o ="YWJ"; object o1 = 123; |
string | System.String | 表示Unicode字符串 |
string str1 = "YWJ";
|
2、转义字符 \
char类型和string类型中用"/"表示特殊意义。
在路径中“\”也会当成转义符,用“@”可以。
3、数据类型转换。
隐式转换,小范围变大范围。
byte bt = 10; int bt1 = bt;
显示转换,大范围变小范围。
int i = 10; byte bt1 = Convert.ToByte(i); byte c = (type)i; int ii = int.Parse("23")
4、装箱和拆箱
装箱:值类型变成引用类型。
拆箱:引用类型变成值类型。
int i = 10; object o = i; //装箱 int j = int(o); //拆箱
四、自定义类型。
- 值类型:struct(结构)和enum(枚举)。
- 引用类型:class类