随笔分类 - .Net
摘要:值类型:struct, enum 引用类型:delegate, interface, array, object, string int?是int装箱为引用类型 装箱:值类型->引用类型 抽象类和接口的区别:抽象类必须被重写;接口不能有字段、访问修饰符,可以多继承 string.Empty 相当于
阅读全文
摘要:LINQ Language-Intergrated Query 语言集成查询,是 C# 中强大的数据查询工具,它将查询能力直接集成到语言中,支持对集合、数据库、XML 等多种数据源进行统一操作。 可以用于.net原生集合、SQL数据库、XML文档、JSON文档(Newtonsoft.Json) 两种
阅读全文
摘要:好的注释可以让其他人快速理解代码的意义。 这不仅有利于文档生成,还可解释特殊逻辑,避免口口相传的麻烦。 好的注释是补充信息,而不是翻译。倘若方法名、字段名是规范清晰的,注释应当专注于解释业务、决策。 以一个非常重要的API方法为例: /// <summary> /// 创建形位标注 /// </su
阅读全文
摘要:多线程 线程是操作系统中能够独立运行的最小单位,是进程的一部分,一个进程可以包含多个线程,线程可以共享进程的资源。 进程有入口线程(主线程) 多线程:批量重复任务同时进行 线程池:异步默认使用线程池 线程安全:多个线程共享资源时,数据不一致导致问题。 原子操作:执行过程中不可中断的操作,要么执行要么
阅读全文
摘要:异步 异步编程的核心概念 async 关键字 用于标记一个方法为异步方法。 异步方法的返回类型通常是 Task、Task<T> 或 ValueTask。 Task:表示一个没有返回值的异步操作。 Task<T>:表示一个返回类型为 T 的异步操作。 ValueTask:轻量版的 Task,适用于高性
阅读全文
摘要:委托 delegate void Foo(); 本质上是引用类型,需要被实例化,实例化时需要传入一个函数。 var foo = new Foo(Method); foo += Method2; foo -= Method; //两种调用方法: foo(); foo.Invoke(); 委托可以为空(
阅读全文
摘要:访问修饰符 抽象类不能被实例化,只能被继承 被protected标记过的方法,只有在这个方法所在类和继承这个类的子类中可以访问到这个方法。 被sealed标记过的类,不能被继承。 如果这个类的功能写的足够完备,没有需求去继承该类重新自定义类的时候,可以将这个类标记为sealed internal标记
阅读全文
摘要:面向对象编程基本原则 S:单一职责原则 Single Responsibility Principle 一个类应该只有一个引起它变化的原因。即一个类只负责一项职责,避免臃肿和牵一发而动全身。 O:开闭原则 Open/Closed Principle 软件实体(类、模块、函数等)应该对扩展开放,对修改
阅读全文
摘要:IEnumerable<T>:用于内存中的集合操作,支持延迟执行,但不支持复杂的查询优化。 IQueryable<T>:用于与外部数据源(如数据库)交互,支持表达式树和查询优化,但依赖于特定的查询提供者。 如果局部变量的类型显而易见,则应该优先考虑使用var。 as运算符和is运算符只会判断对象的类
阅读全文

浙公网安备 33010602011771号