首页 > 代码库 > 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#数据类型