文章分类 - C#
摘要:一:相同点: 都是对要执行的具体现实进行抽象,屏蔽具体实现,提供了扩展性。代码结构异同。 1.1:策略模式是通过策略上下文来区分具体执行者,而简单工厂是通过工厂方法来区分具体执行者。 demo 如下: public abstract class Animal { public abstract vo
阅读全文
摘要:一:程序加载 1:静态构造函数当程序被调用的时候只会加载一次,构造函数每次调用都会被执行。 public class Person { public Person() { Console.WriteLine("构造函数被加载"); } static Person() { Console.WriteL
阅读全文
摘要:一:readonly 用法 当变量名附加readonly 关键字的时候,当前变量只能在构造函数或者变量初始化的时候赋值。 二: readonly 与 const 区别 const:只能修饰常量,不能修饰动态编译 public const int Age = 12; readonly 用来修饰动态编译
阅读全文
摘要:一:委托定义 委托也是一个类,委托派生为System.MulticastDelegate,而System.MulticastDelegate 又继承System.Delegate,如果你知道这个也就明白委托其实是一个特殊的类 语法 delegate关键字 返回类型 委托名(数据类型 参数名) 比如
阅读全文
摘要:一:Null 条件运算 ?. 当对象为null时候不会剖空引用异常,它会返回null 二:?? 与Null值合并运算 三: $"{}" 代替 string.Format 四: 自动属性 五: out 方法变量 六: Tuple 一次返回多个值
阅读全文
摘要:1:为什么要引入可选参数 如果某个操作需要多个值,每次调用的时候又往往相同,这时候就可以使用可选参数,可选参数可以显著低降低重载的数量。 2:可选参数注意事项 2.1:必备参数必须在k可选参数之后 2.2:默认值必须采用字面量,不能采用常量。 2.3:参数数组在可选参数以后 2.4:ref/out
阅读全文
摘要:为什么要引入扩展方法呢? 1: .net 平台地下有Sring 类型,而底层封装一下String 类型常用的方法,但是由于业务需要需要在String类型添加一个方法,而在.net 未引入扩展类型的时候,我们通常会 定义StringUtil 类来实现,虽然这样也能解决问题,但是会使代码变得很难看。 2
阅读全文
摘要:1:C# 为什么有了字段还要属性呢? 在某些方面我们需要限制字段赋值的范围,或者是只读或者只写,这些单靠字段是无法实现的因此有了属性。 代码如下: 属性: 因为属性有set,get 方法可以对其进行安全校验,很好避免数据赋值超限,可以保证数据安全性
阅读全文
摘要:为什么要使用泛型? 1:提高了应用程序的性能 2:避免了隐式的装箱和拆箱,以及运行的类型转换错误。 泛型与集合类型 假设有一个这样的整数数组 int[] nums=new int[4],里面之可以存放4个数据, 比如 nums[0]=1,nums[1]=2,nums[2]=3,nums[3]=4,
阅读全文
摘要:引言: C# 动态创建对象只要有两大类 Activator 和 Assembly 。 Activator 类 Activator 类提供好几个动态创建对象的重载方法。 动态创建对象主要接受的参数为Type,而获取Type对象有三种方式 两种方法区别仅为:创建无参数的构造方法和创建有参数的构造函数。
阅读全文
摘要:前言: 以前我是做物流码追溯系统的,主要是对原辅料喷码,采集,出库,追踪等操作,而我只负责其中一小块部分,主要是对线下所有的手持设备提供扫描接口。为了针对所有不同的项目提供一个标准的接口,我采用一些设计模式和反射,今天我就主要说一下我如何利用反射将扫码接口进行统一标准化。 场景如下: 现在存在多个项
阅读全文
摘要:前言: 假设需要开发一个订单系统,在订单系统中需要表示当前单据的状态。新建,未审核,已审核,。此时,很多开发人员回在数据库中创建单据状态表,命名为StoreStatus (单据状态),如下图所示 在订单系统的其他表中,比如订单表(StoreInfo) 中,通过外键来引用这个表,来获取当前单据状态。如
阅读全文

浙公网安备 33010602011771号