摘要: 今天在写数据结构时遇到的一个关于引用类型传参的问题 我之前认为的引用传值:两个变量指向堆上同一个内存,一个改变另一个也会跟着改变,所以引用类型传值会形参直接改变实参,而上面的代码也很好的验证了我的猜想。但今天将代码改了下发现我之前理解的有问题,上代码 可以看到,实参的值并没有改变。之前理解的有问题, 阅读全文
posted @ 2021-05-08 22:28 这总没有了吧 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 面向对象三大特性:封装、继承、多态。 继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。 其成员被继承的类称为“基类”,继承这些成员的类称为“派生类”。 派生类只能有一个直接基 类。 但是,继承是可传递的。 如果 ClassB 派生出 ClassC,ClassA 派生出 ClassB,则 C 阅读全文
posted @ 2021-03-04 21:22 这总没有了吧 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1、is操作符验证基础类型 public static void Save(object data) { if(data is Person) { Person person = (Person)data; Console.WriteLine("名字是"+person.Name); } else i 阅读全文
posted @ 2021-03-04 20:03 这总没有了吧 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 1、抽象类是仅供派生的类,只能实例化从它派生的类。一个类要从抽象类派生,必须为抽象类的抽象方法提供具体的实现。 定义抽象类要求为类定义添加abstract修饰符。抽象类的主要特点在于它包含抽象成员。抽象成员是没有实现的方法或属性,作用是强制所有派生类提供实现。 抽象成员不能声明为私有。 2、一切类都 阅读全文
posted @ 2021-02-27 11:54 这总没有了吧 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 对于派生类,基类属性声明是合适的,但实现并非总是合适的。因此需要一种机制在派生类种使用自定义的实现来重写(override)基类中的实现 1、virtual修饰符 C#支持重写实例方法和属性,但不支持字段和静态成员的而重写。为进行重写,基类必须将允许重写的成员标记为virtual public cl 阅读全文
posted @ 2021-02-11 20:30 这总没有了吧 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 继承的目的:经常需要扩展现有类型来添加功能。 定义派生类要在类标识符后添加冒号,接着添加基类名称 public class PadItem { public string Name { get; set; } public DateTime LastUpdated { get; set; } } p 阅读全文
posted @ 2021-02-11 18:42 这总没有了吧 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 1、分部类的定义 分部类是一个类的多个部分,编译器可将它们合并成一个完整的类。 在class前的加关键字partial声明分部类。 2、分部方法 分部方法允许方法声明但不实现,若包含了可选的实现,该实现课放到某个姊妹分部类定义中。 方法声明附加了partial,其所在的类也是一个partial类。 阅读全文
posted @ 2021-02-10 11:26 这总没有了吧 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 在类中定义另一个类称为静态类,若一个类在它的包容类外没多大意义,则设计为嵌套类。 嵌套类中this成员引用嵌套类的实例而非包容类的实例,嵌套类要访问包容类的实例,一个方案是显示传递包容类的实例(构造函数或方法参数)。 嵌套类可以访问包容类的全部成员(包括私有成员),但包容类不能访问嵌套类的私有成员。 阅读全文
posted @ 2021-02-08 22:30 这总没有了吧 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 1、const关键字 和const值一样,const字段包含在编译时确定的值,运行时不可修改。 常量字段自动变为静态字段,但将常量字段显式声明为静态的则会造成编译错误 2、readonly关键字 readonly只能用于字段(不能用于局部变量),即字段值只能从构造函数中更改,或在声明时通过初始化器指 阅读全文
posted @ 2021-02-07 22:29 这总没有了吧 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 能模拟的为其它类创建实例方法,改变静态方法的签名,使第一个参数变成要拓展的类型,且在类型前附加this关键字。 扩展方法要求如下: 1、第一个参数使要扩展或者要操作的数据类型,称为“被扩展类型”; 2、为指定扩展方法,要在被扩展的类型名称前附加this修饰符; 3、为了将方法作为扩展方法访问,要用u 阅读全文
posted @ 2021-02-07 21:36 这总没有了吧 阅读(71) 评论(0) 推荐(0) 编辑