嗯~,这是我的第一篇博客,作为一个程序小白来到这里学习知识,转眼注册博客园已经快一年了,嗯,整理一些小知识,既是自己的知识梳理,也是和大家分享和共勉,感谢…
先介绍一些最基本的名词解释吧
CLR(Common Lanauage Runtime) 公共语言运行库
BCL(Base Class Libary) 基类库
GC(Garbage Collector) 垃圾收集器
CIL(Common Intermediate Language) 公共中间语言
CLI(Common Language Infrastructure) 公共语言基础结构
emm..接下来是格式规范啦,我觉得有良好的代码习惯很重要,格式和注释
Pascal 大小写 一般用在类,方法,命名空间,属性和公共字段上
Camel大小写 一般用在局部变量名称和方法形参名称上
下划线加Camel大小写 一般用在私有成员和受保护字段上
标识符:字母和下划线都可以但是数字不能放在首位,@只能放在首位但是不推荐使用,特别注意,标识符是区分大小写的!
var实际上是编译期抛给我们的“语法糖”,一旦被编译,编译期会自动匹配var 变量的实际类型,并用实际类型来替换该变量的申明
dynamic被编译后,实际是一个object类型,只不过编译器会对dynamic类型进行特殊处理,让它在编译期间不进行任何的类型检查,而是将类型检查放到了运行期。
小知识
每个C#程序必须有一个类且带有Main()方法;语句块是指用{ }包围的一条或多条语句,它在语法上相当于一条语句
Write 不换行显示 WriteLine换行显示 ({0} {1} {2}, 1 , 5 ,7}从零开始 一一对应输出 {0:C}格式化字符串
值类型:存储在栈里(包括13种预定义简单类型,结构和枚举)
引用类型:栈里存储引用,指向堆里的数据(object,string,dynamic,|| class,interface,delegete,array)三种非简单类型
大方法
16种预定义类型,6种用户定义类型
类类型 class 结构类型 struct 数组类型 array 枚举类型 enum 委托类型 delegate 接口类型 interface
分点精讲 ——类
类成员的类型:
数据成员存储数据:字段和常量
函数成员执行代码:方法,运算符,属性,索引器,构造函数,事件,析构函数
常量:Const 本地常量 声明时赋值 不能声明为static 不可改变 readonly常量 随时赋值 运行时确定常量的值
方法:有名称的可执行代码块 void SumNum() 返回类型 方法名 参数列表 Sum sum = new Sum() 声明并初始化一个方法
形参:本地变量,声明在方法的参数列表中 void SumNum(int x,int y)
实参:初始化形参的表达式称为形参 SunNum(5,3)
将引用类型作为值参数传递:赋一个新值给形参,将切断形参与实参的关联,并且在方法调用结束后,新对象也不复存在(分离改变)
将引用类型对象作为引用参数传递:赋一个新值给形参,在方法调用结束后,该对象仍然存在,并且是实参所引用的值(一起改变)
引用参数:ref修饰符 (实参必须是变量 在用作实参前必须被赋值)就像是形参作为实参的别名 方法和调用上都要用修饰符
输出参数:out修饰符 (实参必须是变量,在读取之前必须被赋值 必须在方法内进行赋值)
参数数组:一个参数列表只能有一个,且必须是最后一个,用params修饰符 void ListInts(params int[] inVals) 修饰符 int型参数数组 参数名称
两个为参数数组提供实参 ListInts(10,20,30) 方法二 int[] intArray = {1,2,3}; ListInts(intArry);
一个类中可以有一个以上的方法拥有相同的名称,这叫做方法重载,但是必须有不同的签名( 方法名称,参数数目,数据类型和顺序,参数修饰符)
命名参数:只要显式的指定参数的名字,就可以以任意顺序在方法调用中列出实参 int result = mc.Calc(c:2,a:4,b:3);
可选参数:方法定义时确认值,调用时可以选择不覆盖 public int Calc(int a,int b = 3)
递归:调用自身 public void Count(int intVal){ if(inVal == 0) return; else Count(InVal -1) Console.WriteLine("{0}“,inVal );}
静态函数成员:不能访问实例成员,能访问其他静态成员(字段,类型,方法,属性,构造函数,运算符,事件)
访问修饰符:
public 公有的 没有限制,任何地方可以访问。
private 私有的 当前类的内部可以访问
internal 内部的 当前程序集内部。
protected 受保护的 当前程序集内部,并且所有的子类内部也可以访问。
protected internal 受保护的内部的 当前类内部,所有子类内部,当前程序集内部都可以访问。
属性:有类型,可以被赋值和读取,可以有静态属性,函数成员,不分配内存,属于命名类的成员,set{ } get{ }(必须包含一条return语句) 为属性赋值 从属性获取值
两种命名约定:属性使用Pascal大小写 字段使用Camel大小写 方法二:属性使用Pascal大小写 字段使用下划线开始的Camel大小写