1. .net framework原理简介,C#程序的两次编译
.NET源代码——>语言编译器(第一次编译)——>MSIL+元数据(exe文件)——>CLR(公共语言运行时——类似于jre)——>机器代码(第二次编译)——>代码被执行
2.Main函数是什么?在程序中使用Main函数有什么需要注意的地方?
程序的入口函数!函数名字不能改变;一个程序中有且只有一个Main函数。
3.CLR是什么?程序集是什么?当运行一个程序集的时候,CLR做了什么事情?
Common Language RunTime 公共语言运行时。(类似于jre)
编译后代码的集合。(包括exe和dll)。 加载项目里所有的类到内存,并找到其中的主函数,并作为默认的启动函数调用执行。
4.值类型的默认值是什么?(情况一:字段或全局静态变量;情况二:局部变量)
如果是全局变量,并且没赋值,就会有默认值,如:int 是0;bool 是false;枚举enum;结构体struct;
如果是局部变量,就必须手动赋值。
5.声明一个变量时在内存中做了什么事情?初始化一个变量的时候又在内存中做了什么事情?
在栈中开辟空间,并将变量放入空间里,默认值都是null。
初始化时:
如果是值类型,则直接放入栈中;
如果是引用类型,则在堆中开辟一块空间,将堆中对象的地址指针放入栈中
6.new关键字做的事情?
开辟空间,创建对象,调用构造函数,返回堆地址。
还可以显示的隐藏父类的同名方法。
7. 数组一旦创建后,能不能修改数组的长度?
不能。因为数组是引用类型。它在创建时,已经根据创建的长度在内存中开辟一块连续的空间。
8.多维数组——>本质就是一个一位数组,只不过访问的 时候需要使用多个下标访问
1)、如何声明一个多维数组?
多维数组string[,] strArr=new string[3,3];
2)、如何获取多维数组的总长度
各个纬度元素的个数的乘积
9.交错数组
- 如何声明一个交错数组?
交错数组:int[][] arr=new int[3][3];
- 交错数组的本质是什么?
本质是一个数组的数组。简单的说这个数组的元素是一个数组。
10.方法
- 为什么要有方法?
为了提高代码的可重用性,实现复用(实现封装)
- 如何实现方法的重载
方法名相同,但参数列表不同,与返回值无关
- 引用参数“ref”和输出参数“out”的相同点与不同点
相同点:传递的都是(栈)引用
不同点:
1.out侧重于输出;ref侧重于修改;
2.out必须在方法返回之前赋值,ref必须在传入之前赋值。
11.面向对象的三大特征:
封装、继承、多态
12.类与对象的关系
类是抽象的,一个具有相同特征或相同行为的事物的集合(类是一组具有相同数据结构和相同操作的对象的集合)。(如人类)
对象是类中的一个具体的个体。(如一个人就是一个人类的对象)
简而言之就是:类是对象的抽象描述,而对象是类的具体化。
13.创建某一个类的对象的时候,在内存中做了什么事情?(例如:Person p = new Person();)
开辟空间,创建对象,调用构造函数。(在内存的堆栈中开辟空间,创建Person对象,然后在内存的栈中开辟一个空间放一个p,然后将Person对象在堆中的引用地址赋值给对象P)
14.属性的存在的目的是什么?
封装字段。为了字段的操作设置规则。其实在本质上就是两个方法,一个get方法个一个set方法
15.访问修饰符
public:公有的,在任何类中使用
private:私有的,在本类中使用
protected:受保护的,在本类及派生类中使用
internal:内部的,在namespace中使用
extern:供外部访问(C#提供接口给C++访问)
16.为什么要有构造函数
其目的主要是方便程序员在实例化对象的时候就为对象里的一些属性和字段初始化赋值
17.什么是封装?封装有何目的?
封装就是将对象的字段、行为和功能等“整合”到一起,以方便使用
封装的目的:隐藏代码的实现,实现代码重用,方便修改以及维护
18.类以及变量的命名规则是什么?
类:首字母大写(帕斯卡命名规则)
变量:首字母小写(骆驼命名规则)
.NET知识点总结一(笔记整合),布布扣,bubuko.com