set ; get

前言 OOP  少不了类的实例化、对象属性的赋值操作,在类中,经常可以看到 set ; get 的存在,那么他们的作用是什么呢 ? 写个文档,方便以后失忆了查看。 1,set 的使用 有一个 Person 类,类中有一个 int 型的字段 age。 public class Person { public int age; } 实例化 Person 得到一个对象后,给该对象里的 age 赋值为 -5,编译是可以通过的,但是年龄为负数,首先不符合常理,其次如果程序其他地方读取了改数值,并且默认按照 […]

序列化和反序列化

命名空间 System.Runtime.Serialization.Formatters.Binary; 序列化:将对象转换为二进制 反序列化:将二进制转换为对象 目的:传输数据。因为数据是以二进制的形式进行传输的。   序列化步骤 1,对需要序列化的类,标记为可序列化。在类的上方,打上标记 [Serializable],如下 Person 类: [Serializable] public class Person { private string _name; public stri […]

面向对象中的“小知识点”

static 关键字 好多文章已经把 static 说的很全面了,其实根据我目前的理解, static 的作用就是告诉系统,静态的东西在加载的时候就创建,存在于方法区的静态区,相应的作用就有: 随着类的加载而加载 优先于对象存在(对象要实例化) 被类的所有对象共享 (避免相同属性占用内存空间) 可以通过类名调用(不必先实例化,因为类加载的时候就存在了) 静态方法中没有 this 关键字 (没有必要要 this 了) 1、2 是被 static 修饰的类或者变量的基本特性。3、4 是由基本特性扩展 […]

C# 委托和事件

之前写了一个狮子捉动物的例子,传送门:C# 发布-订阅模式 在那个例子中,用到了委托和事件,这里对例子里的代码进行详细解说,加深自己的理解。 首先,在公共部分定义一个委托: public delegate void FindEventHandler(string animals); // 可以看出这个委托是带有一个 string 类型参数的 然后我们分析一下狮子类: public class 狮子 { // 基于上面定义的委托定义了一个事件 public event FindEventHandl […]