C#中的数据类型

预定义类型

C#提供了16种预定义类型,所有预定义类型的名称都由全小写的字母组成

decimal:高精度小数类型,与float、double不同,decimal类型可以准确地表示分数,它常用于货币的计算

char:Unicode字符类型

bool:布尔类型,bool类型表示布尔值必须为true或false,(与C++不同C#中的数值类型不具有布尔意义)

内置引用类型:
object(对象类型)通用类型,所有数据类型的终极基类,System.Object类的别名) 当一个值类型转换为对象类型时,称为装箱,object obj;  obj=100;//装箱  当一个对象类型转换为值类型则称为拆箱

dynamic(动态类型):dynamic可以储存任何类型的值在动态数据类型变量中,在编译时,编译器不会对dynamic类型的变量进行类型检查,相反,它将与该变量及该变量的操作有关的所有信息打包,在运行时会对这些信息进行检查,以确保它与变量所代表的实际类型保持一致性,否则在运行时抛出异常。写法:dynamic d=20; 动态类型与对象类型相似,但是对象类型检查是在编译时发生的,而动态类型变量的类型检查时在运行时发生的

string(字符串类型):System.String类的别名,从对象Object类型派生的 以下为几种定义方法

string s1 = "C:\\Windows"; //如果写成C:\Windows 则会报错,因为\为转义字符
string s2 = @"C:\Windows"; //前面加@则会将转义字符当普通字符来对待 @字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。
string s3 = $"地址:{s1} {s2}";   //新特性 其中s1 s2为俩个字符串变量

用户定义类型

6种类型可以由用户自己创建:

class(类类型)  引用类型
struct(结构类型)  值类型
array(数组类型)  引用类型
enum(枚举类型)  值类型 
delegate(委托类型)  引用类型
interface(接口类型)  引用类型

值类型和引用类型

类型被分为俩种:值类型和引用类型

C#中变量创建的位置在栈上还是在堆上与是否使用new无关,而与它的类型有关,只要是值类型就创建在,只要是引用类型它的实际数据就创建在,例如int i=new int(); 它表示在栈上分配一个空间等待赋值,它与int i=0;完全一样,所以对值类型使用new,它也是在栈上来创建。

值类型只需要一段单独的内存,用于存储实际的数据
引用类型需要俩段内存,第一段存储实际的数据,它总是位于堆中,第二段是一个引用,指向数据在堆中的存放位置

对于引用类型的任何对象,它所有的数据成员都存放在堆里,无论它们是值类型还是引用类型,每种类型的默认值都是0,bool型是false,引用类型默认为null

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值