.net学习之.net和C#关系、运行过程、数据类型、类型转换、值类型和引用类型、数组以及方法参数等
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学习之.net和C#关系、运行过程、数据类型、类型转换、值类型和引用类型、数组以及方法参数等的更多相关文章
- Net基础篇_学习笔记_第十二天_面向对象继承(命名空间 、值类型和引用类型)
命名空间可以认为类是属于命名空间的. 解决类的重名问题,可以看做类的“文件夹”如果在当前项目中没有这个类的命名空间,需要我们手动的导入这个类所在的命名空间.1).用鼠标去点2).alt+shift+F ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Emit学习(2) - IL - 值类型和引用类型(补)
上周末回家去享受生活了, 工作是为了更好的生活嘛, 所以我把生活, 工作分的比较开. 这几天不是很忙, 在学习工作技能的同时, 发点博文, 也算是做一个学习笔记 上篇中, 贴出的地址里面那位哥, 也有 ...
- 学习记录 java 值类型和引用类型的知识
1. Java中值类型和引用类型的不同? [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值, 那么调用这个方法是传入的变量的值也将改变 ...
- C#学习笔记之值类型与引用类型
[TOC] C#学习笔记之值类型与引用类型 1.值类型与引用类型 1.1 深层区别 值类型与引用类型有不同的内存分布,这导致了不同的内存管理机制: 值类型由OS负责内存管理 引用类型由垃圾回收器(GC ...
- c#学习基础(2)存储、值类型和引用类型、变量
程序运行时,它的数据必须存储在内存中,数据项需要多大的内存.存储在什么地方以及如何存储都依赖该数据项的类型 运行中的程序使用两个区域来存储数据:栈和堆 栈是一个内存数组,是一个LIFO(last in ...
- C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型
C# 2012 step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型 本章内容 声明一个枚举类型 创建并使用一个枚举类型 声明一个结构类型 创建并使用一个结构类型 解释结 ...
- 孙鑫MFC学习笔记3:MFC程序运行过程
1.MFC中WinMain函数的位置在APPMODUL.cpp APPMODUL.cpp中是_tWinMain,其实_tWinMain是一个宏#define _tWinMain WinMain 2.全 ...
- C#学习笔记(三):值类型、引用类型及参数传递
值类型和引用类型简介 C#中存在两种数据类型,分别是值类型与引用类型,下面我们来看看这两种类型的区别. 值类型主要包括: 简单类型(如int.float.char等,注意string不是值类型): 枚 ...
随机推荐
- linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)
linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...
- Python 科学计算涉及模块
模块1.数据基础 numpy 模块2.数值运算 scipy 模块3.符号运算 sympy 模块4.图形绘制 matplotlib
- Jenkins 搭建U3D自动发布 IOS
http://www.cnblogs.com/yinghuochong/archive/2013/09/01/3294940.html 1.安装包,工具略过. 2.插件管理 Subversion Pl ...
- SSH协议及其应用
SSH协议及其应用 原文作者:阮一峰 链接: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html http://www.ruany ...
- mysql 外键(FOREIGN KEY)
最近有开始做一个实验室管理系统,因为分了几个表进行存储·所以要维护表间的关联··研究了一下MySQL的外键. (1)只有InnoDB类型的表才可以使用外键,mysql默认是MyISAM,这种类型不支持 ...
- Dynamic Virtual Channels
refer http://blogs.msdn.com/b/rds/archive/2007/09/20/dynamic-virtual-channels.aspx An important goal ...
- Cocoa的MVC架构分析 cocoa的mvc实现
Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言.当然,在代码中也可以嵌入C和C++的语句.初识Objective-C时会觉得它的语法很奇怪,但本质上和 ...
- Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码
一.下载framework源码: google已经把framework源码托管在了gitHub上: https://github.com/android/platform_frameworks_bas ...
- Android 遍历界面控件
//遍历界面上的控件 fubin.pan LinearLayout sLinerLayout = (LinearLayout)findViewById(R.id.layout_scr); for (i ...
- 关于 CAS 不能登录的问题
经过排查,是因为 Capistrano 部署中设置了 http_proxy.此时通过 cas.m.xxxx.com 域名去访问 CAS 服务时,就不通了,需要修改为 IP 来访问. 但是公司的 CAS ...