首页 > 代码库 > C#数据类型
C#数据类型
值类型
值类型源于System.ValueType家族,每个值类型的对象都有一个独立的内存区域用于保存自己的值,值类型数据所在的内存区域称为(Stack)
值类型主要包括基本数据类型(如 int,float,double)
案例:
int heightzhang=170;
int heightli=heigtzhang;
Console.writeLine("去年张浩的成绩为:"+heightzhang+"李明的成绩为:"+heighli);
heightli=180;
Console.writeLine("去年张浩的成绩为:"+heightzhang+"李明的成绩为:"+heighli);
引用类型
引用类型源于System.Object家族,在C#中引用类型主要包括数组,类,和接口等
案例:
int[] infozhang=new int[]{179,60};
int[] infoli=infozhang;
Console.write("去年张浩的身高是:"+infozhang[0]+"体重是:"+infozhang[1]+"李明的身高是:"+infoli[0]+"体重是:"+infoli[1]);
infoli[0]=180;
infoli[1]=70;
Console.write("去年张浩的身高是:"+infozhang[0]+"体重是:"+infozhang[1]+"李明的身高是:"+infoli[0]+"体重是:"+infoli[1]);
值类型和引用类型
数据类型的分类
类别 描述
值类型 基本数据类型 整型:int
长整型:long
浮点型:float
双精度型:double
字符型:char
布尔型:bool
枚举类型 枚举 :enum
结构类型 结构:struct
引用类型 类 基类:System.Object
字符串:string
自定义类:class
接口 接口:interface
数组 数组:int[],string[]
结构
public int id;
public int age;
public int Id{
get{ return id;}
set{ id=value;}
}
public int Age{
get{ return age;}
set{ age=value;}
}
结构的定义
访问修饰符 struct 结构名{
//结果体
}
结构定义有以下特点:
1.结构中可以有字段,也可以有方法
2.定义时,结构中的字段不能被赋值
public struct Student{
public int id;
public int age;
}
结构的使用
结构的构成和类相似,在使用结构时,要注意以下几个方面:
1.可以不用new,直接定义结构的对象即可‘
2.声明结构的对象后,必须给结构的成员赋初值
public struct Student{
public int id;
public int age;
public void Show(){
Console.writeLine("ID:{0}\n年龄:{1}",id,age);
}
}
static void Main(string[] args){
Student stu;
stu.id=1001;
stu.age=20;
stu.show();
}
结构的使用经验
结构是值类型,声明结构变量就存储一个结构的新副本,即系统要开辟一块新的存储空间,因此结构用得越多所消耗的空间也越多
装箱和拆箱
我们说数据类型按照存储方式可以分为值类型和引用类型,二者仍然可以相互转换。将值类型转换为引用类型的过程称为装箱,反之称为拆箱
static void Main(string[] args){
int i=123;
object o=i;
i=456;
Console.writeLine("值类型的值为 {0}",i);
Console.writeLine("引用类型的值为 {0}",o);
}
拆箱
int i=123;
object o=i;
int j=(int)o;
不同类型的参数传递
1.使用值传递,在方法中对参数值的更改在调用后不能保留
2.所以ref方式传递,可以将对参数值的更改保留
值方式参数传递
在值方式参数传递时,参数可以是引用类型,也可以是值类型
使用引用类型作为参数
class Voter{
public void Vote(SE se){
se.Popularity++;
}
}
SE zhang=new SE();
zhang.Age=25;
zhang.Name="张菁";
zhang.Gender=Gender.female;
zhang.Popularity=10;
MessageBox.Show(zhang.SayHi());
Voter voter=new Voter();
voter.Vote(zhang);
MessageBox.Show(zhang.SayHi());
引用方式参数传递
1.使用引用类型作为参数
private void Vote(ref SE se){
se.popularity++;
}
2.使用值类型作为参数
private void Vote(ref StructSE se){
se.popularity++;
用ref方式传递的二种参数形式没有区别,都会保存方法中的修改
}
C#数据类型