您的位置:首页 > 编程语言 > C#

C#学习笔记整理1

2012-09-05 19:30 253 查看
************************值类型和引用类型******************************

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.引用传值只是把实参的地址传过来,而不是实参中保存的地址!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: