C#学习笔记整理1

************************值类型和引用类型******************************

1.framwork 内存中的划分:

1.1.数据区:例如各种变量

a.栈:stack ,值类型,进栈,结构,枚举,double,能被直接访问

b.堆:heap,引用类型,进堆,字符串,数组,各种类,(不能直接访问,访问的是地址)

1.2代码区:例如,int a,b;a+b;方法类型的定义


2.只要变量中储存的是自己就是数据

3.  

a.  int  a=17965 (a的内存地址是17965)

b.  string str ; (str的地址是8611)

      str="xyz";  (str中储存了“xyz"的地址110113)


4.

class person

p=new person

p.name="李四" (只修改了相应内存中的内容)

p=new person("王五")   //  新内存中生成”王五“地址是13910    张三(堆8610) 李四(堆99816)

person p2 引用(进栈)

p2=new person(”赵六“) //堆中生成新的实例,堆中的东西只有内容,没有名字

p(地址13910)=p2(地址1119);//此时”王五“张三”无引用,所以就被回收了

p2=null(但p还有引用)

p=null(则:赵六被回收)


5.函数传参时,是默认是按照值进行传递的

例如:double numberByRef(ref  int a) //必须加ref,才能按照引用传参,ref主要是针对值类型而言的,引用类型的参数传递的还是引用。

6.out方式传参的优势在于可以从函数中返回多个返回值


7.引用类型的的比较判断:

person p

person p2

p=new person( )

p.name="tom"

p2=new person( )  //p不等于p2  因为p和p2指向的不是内存的同一块内存地址

p2.name="tom"  

if(p.equals(p2))  -->可以用来比较引用类型的值是否相等


8.string类型的相等判断

string str

str="abc"

string str2

str2="abc"

if(str==str2)  //str 等于str2 ,因为str和str2所引用的字符串池创建的地址是相同的


9.char类型相等的判断

char a=‘a’

int y=97

if(x==y) // x和y的数据;类型不匹配,不能比较,char  x  是2个字节,int  x是4个字节 ,

int  x=x(字符) //从小类型数据向大类型数据转换,不需要强转


10.  引用类型和之类型的转换必须要进行强制转换,且if  判断的运算符的两边的数据应相同(都为引用,或者都为数值)



****************************数组******************************

1.几乎任何数据类型都能构成数组

2.   int [ ] a  (a在栈中地址是91891) =new int [5]  (在堆中,地址是19380,堆中的东西没有名字,只有地址!!)

3. int  [  ] [  ]arrayofarray   //栈中的地址就是4个字节,因为32位系统的寻址就是32位,也就是4个字节

4.  空格不等于空白字符

5. 使用引用类型,形参和实参指向同一块内存

6. 

int  [ , ]  scare= new int [3,2]

foreach(int tmpint in score)

{

console.writeline( tmpint+“\t”)    // 可将二维数组中的数都遍历到,所以二维数组本质是所有数据在一个容器中,相当于一维数组

}

7.引用类型存放的就是地址,要么是Null,要么为某个内存的首地址

8.尽量少定义,但是可以多次赋值

9.  X.toString ( ) (弱转) ,(string)X (强转)  //使用强转的不安全

10.当数据量越大时,使用HashTable越有优势

11.类实例在堆中的存放模式

a.类的字段可以在堆中中有多份(每个实例中堆中开辟一个新的内存)

b. 类的方法只存在于代码区,全员共享,所以只存放一份

12.构造函数中可以执行类内的方法,因为在构造函数执行之前,内存中已经生成实例了,构造函数只不过是为该实例中填充数据而已

13.

a.引用传值是将当前形参的栈地址改变为形参的栈地址

b.引用传值只是把实参的地址传过来,而不是实参中保存的地址!!!





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值