.net学习之.net和C#关系、运行过程、数据类型、类型转换、值类型和引用类型、数组以及方法参数等
2013-10-17 22:00
796 查看
1..net 和 C# 的关系
.net 是一个平台,C#是种语言,C#语言可以通过。net平台来编写、部署、运行。net应用程序,C#通过。net平台开发。net应用程序
2.。net平台的重要组成
FCL(framework class library) - 框架类库,即微软事先定义好的类的集合
CLR - 公共语言运行时,即创建、部署、运行。net的必备环境
3.C#源代码的运行过程
通过csc命令将C#源代码编译成exe文件,即程序集,由MSIL(微软中间语言)组成,双击运行,通过CLR公共语言运行时,由于CPU只认识二进制代码,所以JIT会将程序集的微软中间语言转换为本地平台的CPU指令(即二进制代码)并将指令发给CPU执行。
(1)不是所有的exe文件都叫程序集,只有通过csc命令编译的成的文件才叫程序集
(2).net平台是一个跨语言的平台,可以通过C#、VB等语言来开发。net应用程序
4.数据类型
(1)内存的访问速度特别快
(2)在内存里开辟空间的时候要指定空间的类型
(3)每一种数据类型在内存中开辟多大的空间是根据这个数据类型的最大值来确定的
(4)数据类型就是内存中开辟空间大小的一个模板
(5)预定义数据类型:微软事先规定好开辟空间的大小的模板。
(6)变量就是开辟的那块空间
(7)变量的类型:就是为这个空间取得的别名
(8)变量的值:就是这块空间的值
5.类型转换
Parse方法转换字符串和Convert转换字符串的区别:
Convert方法内部就是调用Parse方法转换,只不过在转换之前先判断字符串是否为null,比如转换int时为null值返回0,不会抛出异常
6.值类型和引用类型
值类型:比如数值类型 char bool 枚举 结构等,直接将数据存储在栈里的变量的空间里面
引用类型:string 数组 类,变量声明在栈里面,真实的对象存储在堆里面,栈里面的变量存储的是对象的地址
将一个变量赋值给另外一个变量:无论如何都是将变量的值拷贝一份进行赋值,不同的是引用类型的变量里存储的是地址,所以导致了传递的地址指的是同一个对象。
7.流程控制
switch只能判断等值,if else可以判断等值也可以判断范围
for(int i=0;;i++)判断条件不写,永远为true
{
}
for (; ;)死循环
{
}
8.二维数组
int[,] array = new int [2,3];//表示2行3列的二维数组
Console.WriteLine(array.Length);//数组长度为6
Console.WriteLine(array.Rank);//表示数组的维数 2
for (int i = 0; i < array.GetLength(0); i++)// array.GetLength(0) 获取数组指定维度的长度
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.WriteLine(array[i,j]);
}
}
int[, ,] array = new int[2, 3, 4];//三维数组
9.交错数组
//交错数组,交错数组的本质是一个一维数组,只不过这个一维数组的元素又是数组
int[][] array = new int[2][];//表示有两个int类型的数组int[] int[]
array[0] = new int[3];
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[1] = new int[1];
array[1][0] = 1;
foreach (int[] item in array)
{
foreach (int i in item)
{
Console.WriteLine(i);
}
}
int[][][] array = new int[2][][];//交错数组
10.方法重载和可变参数parames
方法名称相同,方法的参数个数或者类型或者参数顺序不同并且在同一个类中就叫做方法重载
可变参数Test(parames int[] array,int i)只能放在参数最后面,因为在调用方法时可以直接进行元素传递,用逗号分隔,程序不知道逗号的真正意义是什么
11.ref和out参数
ref和out传递的都是变量的地址
ref侧重于修改,out侧重于输出值
ref在传递之前必须要有值,因为在方法中有可能会用到这个参数的值,out在传递之前可以没有值,因为在方法中必须为这个变量赋值
.net 是一个平台,C#是种语言,C#语言可以通过。net平台来编写、部署、运行。net应用程序,C#通过。net平台开发。net应用程序
2.。net平台的重要组成
FCL(framework class library) - 框架类库,即微软事先定义好的类的集合
CLR - 公共语言运行时,即创建、部署、运行。net的必备环境
3.C#源代码的运行过程
通过csc命令将C#源代码编译成exe文件,即程序集,由MSIL(微软中间语言)组成,双击运行,通过CLR公共语言运行时,由于CPU只认识二进制代码,所以JIT会将程序集的微软中间语言转换为本地平台的CPU指令(即二进制代码)并将指令发给CPU执行。
(1)不是所有的exe文件都叫程序集,只有通过csc命令编译的成的文件才叫程序集
(2).net平台是一个跨语言的平台,可以通过C#、VB等语言来开发。net应用程序
4.数据类型
(1)内存的访问速度特别快
(2)在内存里开辟空间的时候要指定空间的类型
(3)每一种数据类型在内存中开辟多大的空间是根据这个数据类型的最大值来确定的
(4)数据类型就是内存中开辟空间大小的一个模板
(5)预定义数据类型:微软事先规定好开辟空间的大小的模板。
(6)变量就是开辟的那块空间
(7)变量的类型:就是为这个空间取得的别名
(8)变量的值:就是这块空间的值
5.类型转换
Parse方法转换字符串和Convert转换字符串的区别:
Convert方法内部就是调用Parse方法转换,只不过在转换之前先判断字符串是否为null,比如转换int时为null值返回0,不会抛出异常
6.值类型和引用类型
值类型:比如数值类型 char bool 枚举 结构等,直接将数据存储在栈里的变量的空间里面
引用类型:string 数组 类,变量声明在栈里面,真实的对象存储在堆里面,栈里面的变量存储的是对象的地址
将一个变量赋值给另外一个变量:无论如何都是将变量的值拷贝一份进行赋值,不同的是引用类型的变量里存储的是地址,所以导致了传递的地址指的是同一个对象。
7.流程控制
switch只能判断等值,if else可以判断等值也可以判断范围
for(int i=0;;i++)判断条件不写,永远为true
{
}
for (; ;)死循环
{
}
8.二维数组
int[,] array = new int [2,3];//表示2行3列的二维数组
Console.WriteLine(array.Length);//数组长度为6
Console.WriteLine(array.Rank);//表示数组的维数 2
for (int i = 0; i < array.GetLength(0); i++)// array.GetLength(0) 获取数组指定维度的长度
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.WriteLine(array[i,j]);
}
}
int[, ,] array = new int[2, 3, 4];//三维数组
9.交错数组
//交错数组,交错数组的本质是一个一维数组,只不过这个一维数组的元素又是数组
int[][] array = new int[2][];//表示有两个int类型的数组int[] int[]
array[0] = new int[3];
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[1] = new int[1];
array[1][0] = 1;
foreach (int[] item in array)
{
foreach (int i in item)
{
Console.WriteLine(i);
}
}
int[][][] array = new int[2][][];//交错数组
10.方法重载和可变参数parames
方法名称相同,方法的参数个数或者类型或者参数顺序不同并且在同一个类中就叫做方法重载
可变参数Test(parames int[] array,int i)只能放在参数最后面,因为在调用方法时可以直接进行元素传递,用逗号分隔,程序不知道逗号的真正意义是什么
11.ref和out参数
ref和out传递的都是变量的地址
ref侧重于修改,out侧重于输出值
ref在传递之前必须要有值,因为在方法中有可能会用到这个参数的值,out在传递之前可以没有值,因为在方法中必须为这个变量赋值
相关文章推荐
- Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库 自定义日志记录功能,按日记录,很方便 C#常量和字段以及各种方法的语法总结 类型,对象,线程栈,托管堆在运行时的关系,以及clr如何调用静态方法,实例方法,和虚方法 asp.net webapi 自定义身份验证
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- 17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)
- 复习一下基础:'C# 值类型和引用类型 以及作为方法参数的区别'
- C# 数据类型的引用类型、值类型内存存储方式以及区别; 函数参数传递的引用传递(址传递)、值传递区别
- 采用扩展方法实现数组中数据类型转换(c#)
- C# 值类型和引用类型 以及作为方法参数的区别
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- 基本数据类型的包装类型作为参数传递,以及其他引用类型作为参数传递,以及List中值的交换的一些问题
- 例题4-7向一个方法的基本数据类型参数传值/4-8引用类型参数
- QT 自定义信号与信号槽方法及解决自定义数据类型或数组作为函数参数的问题
- Hibernate多条件查询以及与java+sql 之间数据类型转换关系
- Java基础小知识——基本数据类型和字符串以及字节数组的转换
- C#基础学习--方法参数的种类,值参数,引用参数(ref),输出参数(out),数组参数(params)
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- 基本数据类型的包装类型作为参数传递,以及其他引用类型作为参数传递,以及List中值的交换的一些问题
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- C#之基础数据类型和字节数组的转换
- c#数据类型转换,BYTE,float,double,char类型间的转换方法
- C#数据类型转换方法