.NET基础回顾

一..NET平台与C#语言

1. .NET平台的重要组成部分:

(1) FLC – 框架类库;

(2) CLR – 公共语言运行时;

2. .NET语言有C#,F#,VB.NET等,C#是专门为.NET平台开发的一种语言。

3. .NET版本

2002年.NET平台发布1.0,2.0的发布让.NET真正火起来。

二..NET程序的简单编译

1. C#的程序集由MSIL(微软中间语言)组成。

2. 编译生成的exe文件双击运行,CLR同时运行,CLR下的JIT会将程序集的微软中间语言转换成本地平台的CPU指令,并将指令发给CPU执行。

3. 通过MONO可以实现.NET程序的跨平台,可以在LINUX,UNIX等操作系统上完美运行。

三.VS使用技巧

代码段编辑管理:例如,“cw”+Table键可以自动输出“Console.WriteLine()”。

四.数据类型转换

面试题:Parse转换和Convert转换有什么区别?

Convert转换其实内部调用的就是int.Parse()方法,只不过在调用之前判断了字符串是不是null,如果是null就返回0。

五.引用类型与值类型

值类型:直接将数据存储在栈里的变量的空间里面。例如,char,bool,枚举,结构等。

引用类型:变量声明在栈里面,真实的对象存储在堆里面,栈里面的变量存储的是对象的地址。例如,string,数组,类等。

六.数组

程序示例:

 1 static void Main(string[] args)
 2         {
 3             //一维数组
 4             int[] a1 = new int[1];//维度为1
 5             //多维数组
 6             int[,] a2 = new int[1,2];//维度为2
 7             //交错数组
 8             int[][] a3 = new int[1][];//维度为1
 9
10             a3[0] = new int[3];//使用交错数组中的数组元素时需要重新实例化定义
11             a3[0][0] = 1;
12             a3[0][1] = 1;
13             a3[0][2] = 1;
14
15             Console.WriteLine(a1.Rank);
16             Console.WriteLine(a2.Rank);
17             Console.WriteLine(a3.Rank);
18         }

七.重载

构成重载的条件:

  1. 方法的名字一样;
  2. 方法参数的个数或者顺序不一样;
  3. 必须在同一个类中;
  4. 与返回值无关;

八.params可变参数

1. 可变参数只能用来修饰一维数组。

2. 在调用的时候会自动将这些元素封装成一个数组,并传递。

3. 可变参数必须放在参数列表的最后。

九.ref和out

相同点:

1. ref和out都是修饰方法的参数,在调用的时候必须在变量前面加ref或out;

2. 如果一个变量被ref或out修饰,不是传递变量的值,而是传递变量的地址;

不同点:

1. out必须在方法内为其赋值,ref可以修改其值也可以不修改;

2. out侧重于输出,ref侧重于修改;

3. out在传递之前可以不赋初始值,因为在方法中肯定会为out赋值;

4. ref在传递之前必须要有值,因为在方法中有可能会用到这个参数的值;

程序示例:

 1 static void Main(string[] args)
 2         {
 3             int i = 1;
 4
 5             Add(i);
 6             Console.WriteLine(i);//输出结果为1
 7
 8             Add(ref i);
 9             Console.WriteLine(i);//输出结果为2
10
11             int[] arr = { 2, 1, 5, 4, 3 };
12             int max, min;
13             GetMaxAndMin(arr,out max,out min);
14             Console.WriteLine(max+":"+min);//输出结果为5,1
15         }
16         static void Add(int i)
17         {
18             i++;
19         }
20         static void Add(ref int i)
21         {
22             i++;
23         }
24         static void GetMaxAndMin(int[] arr, out int max, out int min)
25         {
26             Array.Sort(arr);
27             min = arr[0];
28             max = arr[arr.Length - 1];
29         }
30     }

十.访问修饰符

public:可以在任何地方访问

private:只能在本类中访问

protected:在本类和本类的子类中访问

internal:只能在当前程序集中访问

十一.程序集

经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为·dll或者是·exe的格式,但是要注意,它们跟普通意义上的WIN32可执行程序是完全不同的东西,程序集必须依靠CLR才能顺利执行。

十二.属性

自动属性:public int Age{ get; set; }

就算没有逻辑判断也尽量不要用自动属性,效率会低一点。尽量写成下述形式:

public int Age

{

get{ return age; }

set{ age=value; }

}

十二.占位符

代码示例:

Console.WriteLine(“请输入{0}-{1}范围的数”,min,max);

十三.构造方法

1. 构造方法访问修饰符一般是public,没有返回值(连void都不用)方法的名称与类名一致。

2. 构造方法在创建的时候被自动调用,程序员无法手动调用。

3. 构造方法可以有参数。

4. 构造方法可以重载。

5. 一般的方法可以在构造函数里面被调用。

6. 构造方法可以调用其它的构造方法。

程序示例:

1 1 public Dog(int age,string name)
2 2     :this(age)
3 3 {
4     this.name = name;
5     Console.WriteLine("");
6 6 }

7. 隐式构造函数。

十四.部分类

被partial修饰的类叫部分类或伙伴类。

部分类的应用:winform应用程序中,窗体类和窗体设计类就是伙伴类。

十五.null

1. 只有引用类型的才能为null。

2. 空指针异常原因:引用类型变量值为空。

十五.常量与只读变量

const:

1. 常量声明的时候必须要赋初始值,常量一旦声明就不能改变;

2. 某些数据再程序运行中值不会发生改变,我们就把这个定义成常量,以提高程序的运行效率;

readonly:

1. 只读变量的值是不可改变的;

2. 只读变量的值只能在构造函数中被改变;

3. const是编译时要确定的值,readonly是运行时要确定的值。

十六.枚举

1. 枚举是值类型。

2. 每一个枚举成员都对应一个整型的数值,这个数值默认从0开始递增。

3.可通过强制转换得到该枚举值所代表的数值,或者将一个整型的数值转换为其所代表的枚举值。

4. 可以手动地为每一个枚举成员赋值其所代表的整型数值。

5. 将字符串转换枚举值 Direction d = (Direction)Enum.Parse(typeof(Direction),str);

6. 枚举值所对应的数值默认是int类型,可以在枚举的名字后面加一个冒号来指定这个数值的类型,但是指定的类型只能为整型。

定义示例:

 1 namespace Test
 2 {
 3     enum Direction
 4     {
 5         East,
 6         South,
 7         West,
 8         North
 9     }
10 }

使用示例:

1 static void Main(string[] args)
2         {
3             Direction dir = Direction.East;
4         }
时间: 2024-09-29 20:46:52

.NET基础回顾的相关文章

【DAY26】JAVA 基础回顾

基础回顾 ---------------- 1.跨平台 os JVM : sandbox 1995 2.基本数据类型 byte //1 -128 ~ 127 short //2 -32768 - 32767 int //4 long //8 float //4 doule //8 char //2 boolean //1 3.引用类型 [] class interface 4.运算符 && //短路 || //短路 & // | // ^ //抑或,相同0,不同为1 >>

Linux基础回顾(2)——Linux系统分区二三事

问题来自Linux教材,答案自我整理难免会有不足之处.这是我Linux期末的总结 1. 一块硬盘上可以有几种类型的分区?各自可以有多少个?(各个分区能安装操作系统吗?) 硬盘分区有三种类型的分区:主分区,扩展分区,逻辑分区:一个硬盘最多能划分4个主分区,或者3个主分区加上一个扩展分区,扩展分区上可以划分多个逻辑分区(最多20个).能安装操作系统. 2.用户能否在安装过程中创建扩展分区呢? 分区工具在文件系统类型中没有提供扩展(extended)分区类型,即用户不能根据需要不能手工创建扩展分区.安

PHP移动互联网开发笔记(6)——MySQL数据库基础回顾

最近看了一些架构方面的资料,但是发现基础知识都不怎么牢固,接下来的一段时间,我会定期总结基础知识. 一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127 无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-32768~32767 无符号值:0~65535 MEDIUMNT 3字节 中等大小的整数 带符号值:-8388608~8388607 无符号值:0~16777215 INT 4字节 标准整数 带符号值

[C#] C# 基础回顾 - 匿名方法

C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ≥ C# 3.0 的版本中,我们会用 Lambda 表达式进行取代匿名方法,并且用 Lambda 表达式作为编写内联代码的首选方式,因为它更简洁. 匿名方法是,顾名思义,匿名方法就是没有名称的方法.匿名方法最明显的好处就是:可以降低额外另写一个方法的工作量:另外一个好处就是可以直接访问调用者的变量,

四、Android学习第四天——JAVA基础回顾(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的第四天,在程序中已经遇到了JAVA中以前不常用的一些知识点,赶紧回顾复习一下,打下基础 这里就做个简单的小结: 一.匿名内部类 匿名内部类说白了就是个没有被命名的JAVA类 在以下条件下使用匿名内部类比较适合: ①只用到该类的一个实例时 ②类在定义后被马上用到 ③类非常小(SUN推荐是在4行代码以下

spring 基础回顾 tips01

spring 属性注入时,类中必须有setter 和 getter方法. spring配置文件中: java业务类中注入DAO: private StudentDao studentDao; // 通过属性注入 public StudentDao getStudentDao() { return studentDao; } public void setStudentDao(StudentDao studentDao) { this.studentDao = studentDao; } spri

spring 基础回顾 tips02

spring注入list .set. map. properties 1.list 在xml中这样写: <property name="list"> <list> <value>Michael Huang</value> <ref bean="student"></ref> <value>110</value> </list> </property>

1、java基础回顾与加强

一.    基础回顾 1   集合 1.1  集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:    数组实现, 查找快, 增删慢 由于是数组实现, 在增和删的时候会牵扯到数组 增容, 以及拷贝元素. 所以慢.数组是可以直接按索引查找, 所以查找时较快 ---|LinkedList:   链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后

基础回顾:get方法和set方法(类的继承多态)

基础回顾:get方法和set方法 定义类成员变量时,可以在@interface中定义,也可以在@implementation中定义: 在@interface中声明,成员变量的状态是受保护的,即“@protected”: 在@implementation中声明,成员变量的状态是私有的,即“@private” 在类的外面,是无法直接访问成员变量的,只有将成员变量修改为@public时,才可以外部访问. 使用@public时,访问成员变量使用“->”,如: time->hour=25; 但使用@pu

JavaScript 基础回顾——对象

JavaScript是基于对象的解释性语言,全部数据都是对象.在 JavaScript 中并没有 class 的概念,但是可以通过对象和类的模拟来实现面向对象编程. 1.对象 在JavaScript中,对象被定义为无序属性的集合,属性可以是任何类型的值,包括其他对象或函数.函数作为属性值时称为“方法”,即对象的行为. (1)对象常用的内部属性 对象的内部属性是由JavaScript 规范定义的,由运行代码的系统来访问.对象常用的内部属性: prototype        对象        获