C#基础一

方法

方法就是对1段代码重用的机制

调用方法传递参数的时候需注意:
类型一致 顺序一致 个数一致 与参数名无关
方法参数的默认值
可变参数(params)
只能用于修饰数组
必须放在参数列表的最后1个
传递参数的时候可直接传递数组的元素
ref&out修饰参数,传递的是变量的地址

传递的都是变量的地址 ref传递之前必须赋值 out传递之间可不赋值 ref侧重于修改 out侧重于输出

对象
现实世界存在的具体实体,皆有各自的状态和行为

具有相似状态和行为的集合
类是一种复杂的数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的集合体


类名 对象名 = new 类名();
New关键字做了四件事
通过  对象名.成员 来访问对象的属性或者方法. 
类是自定义的一种数据类型
this在方法中使用 代表它所在的类当前在堆里存在的这个对象 如 按照图纸 建造房子 房子里的this代表这栋房子 不代表图纸。代表当前实例对象 增强代码的可读性

namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”。也方便管理类
如果代码和被使用的类在一个namespace则不需要using。
在不同命名空间下的类调用有两种方法:
写全称  命名空间.类名
先using引用命名空间,再调用
 在项目的属性页中 可以看到程序集的名称默认命名空间 输出类型 目标框架  
   命名空间和程序集名称本身没有相关
   程序集就是一个“硬盘” 那么程序集里的命名空间    就是“硬盘”里的“文件夹” 类就是文件夹里的文件 
  命名空间.类名使用  --  类的全名称 包含了命名空间名称
  using 引入命名空间  当前文件中 就可以访问到该命 名空间下的所有的类

类的成员都需要定义访问级别。访问级别的用处在于控制成员在哪些地方可以被访问,这样达到面向对象中“封装”的目的。
Private 只能在类的内部访问
Public  可以在任何地方访问
Protected 只能在本类的内部和子类访问
Internal 只能在当前程序集中访问
类的成员的默认访问级别是private

属性是对字段的封装,提供了一种更为安全的访问字段的方式.
只读属性
只写属性
自动属性   不操作字段、不设置只读、只写、验证逻辑时
属性的本质
各种类型的图标(*)

根据业务需求分析有哪些类
每1个类应该有哪些属性和方法


名词提炼法(*)
人开门案列//两个类 人  门//menzhou 开门  person p = new Person int I = 11;
(求2个数的加减*/)//计算器类()

构造函数的定义 
一般情况下,访问修饰符是public
没有返回值 连void都不用写
名字与类名相同
可以重载
构造函数什么时候被调用
创建对象的时候被调用

构造函数的作用,用于初始化对象的值

部分类(伙伴类)

将类里面的成员物理上分开.
使用partial关键字修饰的类,并且类名一样
编译成程序集的时候会将他们编译在一起

值类型与引用类型


所有的数值类型 char bool 枚举 结构
引用类型
String 数组 类


学会使用reflector查看微软源代码

const 数据类型  常量名称 = 值;   
不能修改常量的值 
使用到常量的地方在编译的时候会直接替换成常量的值
Readonly
只能在构造函数中改值.
常量是编译时确定常量的值 只读变量是在运行的时候确定值

枚举

定义枚举的语法
      访问修辞符 enum 枚举名
      {           枚举成员      }
枚举成员
枚举数表示的整数值
初始值默认从0开始
可以修改初始值 甚至还可以指定这些值的类型(整数)
将枚举值转换为这个枚举值代表的整数值 int i = (int)枚举值
将整数值转换为这个整数值代表的枚举值 枚举值 =(枚举类型)I
将枚举值转换为字符串类型  ToString() ToString(“d”)

面向对象的三大特征  封装(隐蔽代码实现/复用/修改方便) 继承 多态

封装的好处: 1.保证数据安全性 2.提供清晰的对外接口 3.类内部实现可以任意修改,不影响其他类

析构函数

在对象被GC回收的时候调用析构函数.析构函数往往用来做”清理善后”的工作
析构函数的语法.
一个类只能有一个析构函数 析构函数不能被继承或重载。 析构函数不能被调用。他们是自动被GC调用的。 析构函数不能带修饰或参数。 

被static关键字修饰的成员叫做静态成员

里氏替换原则(LSP)

Person p = new Teacher();
子类可以隐式的转换成父类.

Teacher t=(Teacher)p;

可以将子类对象转换为父类对象
不能将父类对象强制转换为子类对象 除非你本来就是1个子类对象



他们的区别

相关文章
相关标签/搜索