c# 第六次学习

本文介绍了C#中的类型系统,包括数据类型的概念、强类型与弱类型的区别,以及在C#中的应用。详细讨论了变量、对象、内存分配,如栈和堆的使用,以及变量的默认值、常量、装箱与拆箱等概念。
摘要由CSDN通过智能技术生成

一.什么是类型(type)

1.数据类型(高级,内存节省)(不要随意占用内存)

  数据在内存中储存的型号

  小内存储存大类型会丢失精度,发生错误。

  大内存储存小的会丢失浪费内存

  编程语言的数据类型和数据的数据类型 不完全相同。(整形相除还是整形)

 

2.强类型语言与弱类型语言的比较。(受数据类型影响)

c#是强类型语言。(类型要求严格)(保证数据的完整性)

c语言类型要求没有那么严格。(判断与c#有区别)

JavaScript是一个一点都不严格的类型。(变量不受数据类型控制)(灵活性)

c#模仿弱类型

dynamic (数据类型不控制实际赋值)(墙头草数据)



二。类型在c#中的运用

1.一个c#类型中的信息

内存空间大小(根据类型不同,完成分配)(表格)

值得最大最小范围(可以计算出)(2的多少次方)

此类型包含的成员(方法,属性,事件)

(静态:没有执行)(动态:执行时)

    静态检验时,通过其中储存的信息,是否通过。

    动态:反射,拿到一个类型,立刻知道其中含有的类,并且使用。

mytype.fullname()    basetype父类。

类型中的查询   可以获得并且通过(反射方法),获得他背后的属性值,或者方法调用。(长期工作使用)

程序被分配的内存中的位置:

  栈和堆:

           函数调用,栈(小而且快,调用多会出问题,栈溢出,运行出错)

           属性,对象的储存。(堆,不会爆掉,忘记回收内存,内存泄漏)


此类型由何处派生而来( )

程序运行时,变量被分配在内存的什么位置()

此类型所允许的运算()

三。c#语言的类型系统

1.c#的五大数据系统

类(引用)(多)window,form,console,string

     有的类无法去寻找他们的父类(class,interface,delegate用来定义的额)

     类比推理。(基本数据类型,其他类型由他而来)

            (isclass判断是不是类)

结构体(值)(多)int32,int64,double

                (F12查看结构体的定义过程    )

枚举(值)(中)horizontal,alignment,visiblity

接口(引用)(暂时不了解)

委托(引用)(暂时不了解)

四。变量,对象和内存

1.什么是变量(变量=以变量名所对应的内存地址为起点,以其数据类型所要求的储存空间为长度的一块内存区域)

变量的实质是一段内存 

变量,存储数据(工具)

  实际上,变量表示了储存位置(内存),并且变量有确认的类型(一定的类型),决定了什么样的值可以存储。

  变量7种:

                    静态变量(public static       调用时时静态的,属于类,不需要实例化)

                    实例变量(成员变量,字段)(public      调用时需 要先实例化类)

                    数组元素(int[]  array=new int[100]    调用时array[x])

                    值参数(public double Add(double a,double b)      double a;)

                    引用参数(double 前面加ref)

                     输出形参(前面加out)

                    局部变量(在一个方法中声明,就是其中的局部变量)

狭义的变量指局部变量,因为他的类有自己的名字。(方法体,函数体)

变量的声明

           int a;声明a变量  (int 声明)(类型+变量名+初始化名字 )(赋值:初始化器)

          

2.值类型的变量()

值类型没有实例,所谓实例与变量合成为一。(1byte=8bit)(在内存空余空间内分配)

(通过类型,和计算机内存运用,找到剩余空间,根据数据类型的大小,进行数据类型变换)

(补码,按位取反,+1)(string str=convert.tostring(s,2) )


3.引用类型的变量和实例

  引用变量和实例之间的关系:引用类型变量里面存储的数据是对象 的内存地址。

(值类型是根据大小分配,引用类型分4个字节,数据全部是0,堆内存中创建实例,地址存在stu中 +)

(引用类型存储的是,系统 分配内存的地址。)


4.变量的默认值((成员变量 )不赋值,默认值为0)

5.常量(值不可改变的变量)(const修饰符,常量 )

6.装箱与拆箱(性能损失)

int x=100;

object obj=x;    obj引用变量,没有值直接为0.  

但是有x的话。

(如果计算机检测到你要给变量赋一个栈上的值时,计算机会先将栈上的值放在堆中,

  然后,把堆的地址,赋给引用变量。)

拆箱。

从堆中将值复制到栈中。

7.局部变量在(栈)上分配内存,实例是在(堆)上分配内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值