CLR: common language runtime(.net 公共语言运行库)管理.net库开发的所有应用程序的执行
CTS: common type system (通用类型系统)指定最基本类型有助于使用.NET Framework的各种语言之间进行交互操作
CIL:common intermediate language (通用中间语言) 编译代码为该语言,CIL代码独立于计算机、os、cpu的,由JIT编译器使用创建所需的本机代码
JIT: just in time (CIL代码仅在需要时才编译)
托管代码:将代码编译为CIL,存储在程序集中,再用JIT编译器将它编译为本机所需代码,还需要管理正在执行的用.NET Framework编写的代码。
创建.NET应用程序所需步骤:
->使用C#编写应用程序代码
->把代码编译为CIL,存储在程序集中
->执行代码时,必须使用JIT编译器将代码编译为本机代码
->在托管的CLR环境下运行本机代码
重置vs c#development settings设置:错误 1: 为“CoffeeScript”[代码 5297] 导入设置时出错。
转义序列 例如用\“来转义“双引号,用\n是换行符的转义序列
字符串插入:如输出Console.WriteLine($"{outline}");
运算符优先级:++,--用作前缀,(),+,-一元时,!,~
*,/,%
+,-
<<,>>
<,>,<=,>=
==,!=
&
^
|
&&
||
=,*=,/=,%=,+=,-=,<<=,>>=,&=,^=,|=
++,--用作后缀
C#的分支技术:三元运算符,if语句,switch语句
switch语句在C++中可以运行完一个case语句后运行另一个case,但在C#中这样做是非法的,每个case语句需要一个break中断switch执行
另外可以使用return语句,不仅中断switch结构,还中断当前函数的执行;还可以用goto语句
三种循环:do循环,while循环,for循环
循环的中断命令:break,continue,return
使用checked设置溢出检查上下文
枚举:枚举值转换为其他类型,需要显式转换
用replace("str1","str2"),替换函数,用str2替换字符串中所有的str1
<string>.Trim()命令,删除空格,可以添加char数组定义删除字符,测试代码时发现trim()出现问题,反而trim(mycahr),[]mychar={' '}
引用传递参数 ref关键字,改变调用的参数值,必须使用初始化之后的‘非常量const’的变量。
或者使用输出参数 out关键字,可以使用未赋值的变量,函数使用out时必须将其看作尚未赋值。
static关键字定义全局变量,const定义全局常量
函数的签名包含函数的名称及其参数,不包含其返回类型
委托:一种存储函数引用的类型,不带函数体,使用delegate关键字,委托声明指定了一个返回类型和一个参数列表
类:理解为车规划图纸,对象:理解为汽车本身。
类决定了对象将要拥有的属性和行为。
class progrem
{ //可以写字段、函数、属性、构造函数。。
//字段:存储数据 属性:保护字段 get set (对自动属性进行保护的时候需要实例化) 函数:描述对象的行为 构造函数:初始化对象,给对象的每个属性进行赋值
}
传智播客 基础加强1:
oop:
封装:
--->减少了大量的冗余代码
--->封装将一坨很难理解的功能封装起来,但是对外提供了一个很简单的使用接口。我们会使用就OK。
继承:
--->减少了类中的冗余代码
--->让类与类产生了关系,为多态打下了基础。
特性:
单根性:一个子类只能有一个父类
传递性:爷爷类 爹类 儿子类
里氏转换:
1、子类可以赋值给父类
2、如果父类中装的是子类对象,则可以将这个父类转换为对应的子类对象
---->关键字
1、is:返回bool类型,指示是否可以做这个转换
2、as:如果转换成功,则返回对象,否则返回null
作用:我们可以将所有的子类都当做是父类来看,针对父类进行编程,写出通用的代码,适应需求的不断改变。
多态:
--->虚方法
virtual override
--->抽象类
abstract override
--->接口
interface
关键字
new
1、创建对象
--->在堆中开辟空间(对象是引用类型,引用类型的值都在堆里)
--->在开辟的堆空间中创建对象
--->调用对象的构造函数
2、隐藏父类的成员 (当子类的函数名和父类一样时)
this
1、代表当前类的对象
2、显示的调用自己的构造函数
base
1、显示调用父类的构造函数(并不是父类的对象)
2、调用父类的成员
静态构造函数只能在以下情况下执行:
*创建包含静态构造函数的类实例时
*访问包含静态构造函数的类的静态成员时
string和object是简单的引用类型,数组是隐式的引用类型,创建的每个类都是引用类型
编译器不允许派生类的可访问性高于基类。
接口的指定必须放在基类继承之后,用逗号隔开。
接口没有关键字abstract和sealed(它们不包含实现代码,不能直接实例化,且必须是可以继承)。接口不是类,所以没有继承System.Object
system.Object包含的方法:
Equals() bool
ReferenceEquals() bool:比较传送给它的两个对象,是不是同一个实例的引用
ToString() String:返回对应于对象实例的字符串
MemberwiseClone() object:创建一个新对象实例并复制成员,以复制该对象
GetType() System.Type:返回对