随笔分类 - C#
C#语言学习
摘要:异步编程要搞懂3个概念async、Task、await; async修饰符指明方法为异步方法; Task是异步方法返回类型; await是运算符,用来等待异步方法完成; 当在异步方法中调用异步方法(理解为启动任务),可以在合适的时机等待任务完成,然后再使用返回的结果,这就是异步编程的优势,可以在一个
阅读全文
摘要:使用sealed修饰的类,标识封装类,不能被继承,如class b 不能被其他类继承; class A {}sealed class B : A {} 也能用sealed修饰重写的虚方法或属性,如下所示,Y类重写了X类的虚方法,并用sealed修饰F方法,那么,Z类就无法重写F方法,所以可以阻止后代
阅读全文
摘要:在进行EF数据查询时,AsEnumerable()会直接将LINQ语句生成sql脚本并到数据库中执行,并将结果加载到内存中,后续操作都是操作内存中的对象; AsQueryable()则可继续进行LINQ运算,因此在EF操作中,在最后的查询进行AsEnumerable()并处理查询结果才是合适方案。
阅读全文
摘要:在开发中遇到调用接口范围XML格式结果情况,获取结果中我们需要的信息则可能需要这两种数据处理; 1、如何将xml字符串转换为xml对象,及查询想要的节点; 通过XmlDocument对象加载xml字符串,如下代码: XmlDocument document = new XmlDocument();
阅读全文
摘要:委托 委托类型使用关键字delegate定义一种方法签名,如:public delegate int PerformCalculation(int x, int y); 包括参数和返回类型,以上语句定义了一个委托类型PerformCalculation,然后可以用来定义变量,如PerformCalc
阅读全文
摘要:Action 泛型委托和Func 泛型委托的区别是前者不带返回值,后者指定返回值类型 两者都有多个变体,最多可包含16个参数 如下是Action 类型和一些变体: public delegate void Action();public delegate void Action<in T>(T ar
阅读全文
摘要:模块是可移植的可执行文件,例如 type.dll 或 application.exe,由一个或多个类和接口组成。 单个模块可包含多个命名空间,而一个命名空间可跨越多个模块。 作为一个单元部署的一个或多个模块组成一个程序集。 有关创建包含多个模块的程序集的信息,请参阅多 文件程序集。 ps:摘抄自:M
阅读全文
摘要:attribute attribute是继承自 Attribute 基类的类,所有继承自 Attribute 的类都可以用作其他代码块的一种“标记”。 例如,有一个名为 ObsoleteAttribute 的特性。 它用于示意代码已过时,不得再使用。 可以将此特性应用于类(比如说,使用方括号)。 [
阅读全文
摘要:为什么需要方法参数修饰符? 方法参数修饰符为了使方法提供可变参数功能(params)和指定参数为引用传递而非值传递(in/ref/out) params 指定此参数采用可变数量的参数。 in 指定此参数由引用传递,但只由调用方法读取。 ref 指定此参数由引用传递,可能由调用方法读取或写入。 out
阅读全文
摘要:装箱是将值类型转换为 object 类型或由此值类型实现的任何接口类型的过程。取消装箱将从对象中提取值类型。装箱是隐式的;取消装箱是显式的。 协变和逆变是引用类型的类型转换,装箱和拆箱则是值类型的类型转换。 看一下例子就能明白 下例将整型变量 i 进行了装箱并分配给对象 o。 int i = 123
阅读全文
摘要:在C#中可以使用以下运算符和表达式来执行类型检查或类型转换: is 运算符:检查表达式的运行时类型是否与给定类型兼容,语法是:E is T 如现有变量high,if(high is int){high++;} as 运算符:用于将表达式显式转换为给定类型(如果其运行时类型与该类型兼容)语法是:E a
阅读全文
摘要:字段和属性语法上的区别主要体现于写法上 fields:private int cardNumber;(名称一般小写字符开头或_) properties:public string Title { get; set; }(大写字符开头) 两者都可以使用各种访问修饰符 主要区别在于C#语言中的不成文约定
阅读全文
摘要:协变和逆变能够实现数组类型、委托类型和泛型类型参数的隐式引用转换。 协变将派生高的类型隐式转换为派生低的类型,如string转为object, 逆变相反。 可以使用 out 关键字将泛型类型参数声明为协变。 协变类型必须满足以下条件: 类型仅用作接口方法的返回类型,不用作方法参数的类型。 类型不用作
阅读全文
摘要:抽象类: 抽象类使用关键字abstract修饰,是一种特殊的类,不能实例化对象,且不能直接调用(区分静态类) 抽象类中可以定义抽象方法(也用关键字abstract修饰),也可不定义任何抽象方法,但抽象方法必须定义在抽象类里 抽象方法只有方法声明,不含有任何方法体,如:public abstract
阅读全文
摘要:静态类用static修饰,且所有类成员(属性和方法)都必须是静态的 静态类不能实例化 静态类的成员属于该类,直接通过类名.属性(或方法名)调用使用 可理解为静态类在整个程序中只有唯一一个 attention:非静态类中也可写静态方法,静态方法属于该类,可通过类名.方法名直接调用,与实例化的对象无关。
阅读全文