随笔分类 - C#
C#学习笔记
摘要:关于扩展方法你应知道的几点:1、扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。2、扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。它们的第一个参数指定该方法作用于哪个类型,并且该参数以this修饰符为前缀。仅当您使用using指令将命名空间显式导入到源代码中之后,扩展方法才位于范围中。3、在代码中,可以使用实例方法语法调用该扩展方法。但是
阅读全文
摘要:1.若一个实例方法声明前带有virtual关键字,那么这个方法就是虚方法。2.虚方法与非虚方法的最大不同是,虚方法的实现可以由派生类所取代,这种取代是通过方法的重写实现的(以后再讲)3.虚方法的特点:虚方法前不允许有static,abstract,或override修饰符虚方法不能是私有的,因此不能使用private修饰符4.虚方法的执行:我们知道一般函数在编译时就静态地编译到了执行文件中,其相对地址在程序运行期间是不发生变化的,而虚函数在编译期间是不被静态编译的,它的相对地址是不确定的,它会根据运行时期对象实例来动态判断要调用的函数,其中那个申明时定义的类叫申明类,那个执行时实例化的类叫实例
阅读全文
摘要:1、 什么是反射2、 命名空间与装配件的关系3、 运行期得到类型信息有什么用4、 如何使用反射获取类型5、 如何根据类型来动态创建对象6、 如何获取方法以及动态调用方法7、 动态创建委托1、什么是反射 Reflection,中文翻译为反射。 这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如: Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的
阅读全文
摘要:.NET Framework通过委托提供了一种回调函数机制。internal delegate void FeedBack(Int32 value);内部委托FeedBack的声明,一个委托要指定一个回调方法的签名,在本例中,FeedBack委托标识了一个方法,该方法获取一个参数(int32类型),并返回void。其实.NET的委托类似于C语言的函数指针,区别在于.NET委托是类型安全的。使用委托的四部曲:(1)定义一种委托类型(2)委托执行时要调用方法(3)定义一个委托实例(4)委托实例的调用委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给
阅读全文
摘要:1 if(o is Employee)2 {3 Employee e=(Employee)o;4 //在if语句剩余的部分中使用e; 5 }1 Employee e=o as Employee;2 if(e!=null)3 {4 //在if语句中使用e;5 }as方法简化代码写法,同时提升性能。为了将一个值类型转换为一个引用类型,可以使用装箱机制。实际发生的是:1、从托管堆分配内存。2、值类型的字段复制到新分配的堆内存。3、返回对象的地址。拆箱实际就是一个指针获取过程,该指针指向包含在一个对象中的原始值类型。
阅读全文
摘要:步骤:1、创建WindowsService工程。2、点击Manage NuGet Packages,查询Microsoft Asp.NET Web APISelf Host,点击Install。3、编辑service.cs文件如下: 1 public partial class Service1 : ServiceBase 2 { 3 private HttpSelfHostServer _server; 4 private readonly HttpSelfHostConfiguration _config; 5 public cons...
阅读全文
摘要:Create->PostRead->GetUpdate->PutDelete->DeleteThere is an issue with this implementation: Post is defined as a non-idempotent method. This means that subsequent calls of the same Post method will result indifferentserver states. Get, Put, and Delete, are idempotent; which means that call
阅读全文
摘要:微软体系内的组件式开发解决方案。属于SOA体系结构。Services areunassociated,loosely coupledunits of functionality that have nocallsto each other embedded in them. Each service implements one action, such as filling out an online application for an account, or viewing an online bank statement, or placing an online booking or
阅读全文
摘要:继承自System.Collection.Generic,Dictionary里面每一个元素都是一个键值对(两个元素组成:键和值);键唯一,值不需要唯一;ex:Dictionary<string,string> example=new Dictionary<string,string>();泛型最常用的用途是泛型集合,命名空间System.Collection.Generic中包含了一些基于泛型的集合类,使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱、拆箱。哈希表
阅读全文
摘要:当你在一个.NET应用程序中声明一个变量时,手想要分配一些内存块到RAM,它包括三样东西,变量名、数据类型、变量的值。根据变量的类型不同,有两种内存分配类型:堆栈内存和堆内存。 明确数据大小或是是否存在动态变化,是变量分配到堆还是堆栈的依据:定——堆栈,不定——堆。 数据从值类型一道引用类型——装箱,反之为拆箱。 引用类型之间的转换,堆上内存重新分配。 隐式转换总会成功的情况,不会抛出异常: 1、从派生类到基类; 2、从派生接口到基接口; 3、从类到接口(该类实现了接口); 4、从Null到任何类; 显式引用转换,以下可能抛出异常,转换不一定成功: 1、从基类到派生类;...
阅读全文
摘要:XML:.....LoadOnDemand="ExplorerTreeView_LoadOnDemand">后台代码:private void ExplorerTreeView_LoadOnDemand(object sender, Telerik.Windows.RadRoutedEventArgs e) { RadTreeViewItem item = e.OriginalSource as RadTreeViewItem; if (item.Item is VoyageVO) { var voyage = item.Item as VoyageVO; Obser
阅读全文
摘要:<Control.Resources> <telerik:RadContextMenu x:Key="ContextMenu"> <telerik:RadMenuItem Header="样品清点" Click="SampleCheck_Click" /> <telerik:RadMenuItem Header="样品室内描述" Click="SampleStationDes_Click" /> <telerik:RadMenuItem He
阅读全文
摘要:虚方法和抽象方法都可以供派生类重写,它们之间区别如下:1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如://抽象方法public abstract class Animal{ public abstract void Sleep(); public abstract void Eat();}//虚方法public class Animal{ public virtual void Sleep(){} public virtual void Eat(){}}2. 抽象方法只能在抽象类中声明,虚方法不是。其实如果类包含抽象方法,
阅读全文

浙公网安备 33010602011771号