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.引用传值只是把实参的地址传过来,而不是实参中保存的地址!!!
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.引用传值只是把实参的地址传过来,而不是实参中保存的地址!!!
相关文章推荐
- C#学习笔记整理_深入剖析构造函数、析构函数
- C#学习笔记整理_变量等基础语法(必看篇)
- C#学习笔记整理-迭代器模式介绍
- C#学习笔记整理_浅谈Math类的方法
- 学习笔记整理之C#
- C# 参考:反射 -- 学习笔记整理,概念与应用
- C# 参考:反射 -- 学习笔记整理,概念与应用
- C#学习笔记一 基础知识点整理
- 有关c#的学习笔记整理与心得
- C#学习笔记26——WPF学习资源整理
- c#学习笔记整理2
- C#学习笔记10:Try-catch的用法和引用类型、值类型整理
- C#泛型(C#_编程指南)CSDN学习整理笔记
- c#学习笔记整理3
- C# 参考:反射 -- 学习笔记整理,概念与应用
- C#学习笔记(八):集合
- C#学习笔记之七(network I/O, Asynchonouse network I/O)
- C#学习笔记之一(basic, class, function,array, collection
- C#学习笔记 系统数据类型
- JavaScript学习笔记整理(五)