
C#
文章平均质量分 72
沐沐夏
这个作者很懒,什么都没留下…
展开
-
C#委托,事件
1、C#中的委托可以理解为函数的一个包装,它使得C#中的函数可以作为参数进行传递。委托是方法的抽象,它存储的就是一系列具有相同签名和返回值类型的方法的地址。调用委托时,委托包含的所有方法将被执行。能被委托包装的方法的限制:(1)、方法的签名必须与委托一致,方法签名包括参数的个数,类型和顺序。(2)、方法的返回类型要和委托一致。eg、B同学有事出不了门,委托A同学帮忙带吃的class A{ publ...原创 2018-04-28 17:29:09 · 161 阅读 · 0 评论 -
读书笔记:改善C#程序的建议1-15
建议一:正确操作字符串 (1)、确保尽量少的装箱 (2)、避免分配额外的内存空间 装箱拆箱的步骤: 1)首先会为值类型在托管堆中分配内存。除了值类型本身所分配的内存外,内存总量还要加上类型对象指针和同步块索引所占用的内存。 2)将值类型的值复制到新分配的堆内存中。 3)返回已经成为引用类型的对象的地址。 完成运行时的字符串拼接,用StringBuilder类型比String更佳。 建议二:...原创 2018-09-07 15:22:09 · 257 阅读 · 0 评论 -
C#反射,System.Type类用法,用构造方法动态生成对象,用Activator生成对象,System.Reflection.Assembly类,
1、通过反射可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举)的成员和成员的信息。通过反射可以直接创建对象,即使这个对象的类型在编译时还不知道。反射主要作用:(1)、获取类型的相关信息(2)、动态调用方法(3)、动态构造对象(4)、从程序集中获得类型2、反射用到的命名空间: using System.Reflection; using System.Type; using ...原创 2018-05-10 20:02:57 · 5405 阅读 · 0 评论 -
C#可空类型,匿名方法,迭代器,自动实现属性,隐式类型,对象集合初始化器,匿名类型,Lambda表达式,变量范围
1、可空类型:引用类型的默认值为null,值类型的默认值为0。但有时候会需要值类型的值为null,故而有了非空类型。eg、(1)、public static void Main(){ int? a = null;//可空类型,并没有int?这种类型,这只是C#提供的一种方便形式,编译器会自动去转化 Console.WriteLine (a); Nullable<int> b = nul...原创 2018-04-28 17:47:00 · 453 阅读 · 0 评论 -
C#约束,泛型高级:泛型委托,泛型接口,泛型方法重载
1、值类型约束:将一个类型形参(T)限定为值类型。值类型派生于System.ValueType类型。值类型约束格式:where T:structeg、public static void Main(){ int a = 9; func (a);+}public static void func<T>(T t) where T :struct{ Console.WriteLine (t)...原创 2018-04-28 17:44:48 · 1052 阅读 · 0 评论 -
C#ArrayList,泛型基础
1、ArrayList是一个极为方便的集合类,无需进行修改即可用于存储任何引用或值类型。但是添加的数据为值类型时需要装箱,检索时需要拆箱,装箱和拆箱会降低性能。故而提供了泛型。eg、泛型-类型名称:在调用时根据实参来确定T的类型public static void print<T>(T a){ Console.WriteLine (a);}public static void Main...原创 2018-04-28 17:43:21 · 1148 阅读 · 0 评论 -
C#单例模式,this关键字,索引器
1、单例模式:保证在整个应用程序的生命周期中,在任何时刻,被指定的类只有一个实例,并未客户程序提供一个获取该实例的全局访问点。eg、class SignleTon{//类是对象的抽象类型 private static SignleTon instance;//声明一个对象,对象名为instance,该对象的类型是SignleTon; private string name; private Sig...原创 2018-04-28 17:41:50 · 584 阅读 · 0 评论 -
C#结构体,结构体与类的区别,运算符重载
1、结构体:在形式上和类很相似,都是一种数据结构,可以包括数据成员和方法。struct 结构体名称{ 字段 属性 方法...}2、结构体与类的区别:(1)、结构体是struct关键字,类是class关键字。(2)、结构体不能在声明时直接对字段初始化,类可以。(3)、结构体无论有没有声明构造函数,默认构造函数一直存在。类中一旦声明了构造函数,编译器都不再提供默认构造。(4)、结构体不能显式地声明无参...原创 2018-04-28 17:40:37 · 1104 阅读 · 0 评论 -
c#方法重载,构造函数,析构函数,readonly与const区别
1、方法重载:在同一作用域中,有多个方法名相同的方法,参数类型不同或者参数个数不同。public static void print () { Console.WriteLine ("1"); }//调用:print(); public static void print(int a) { Console.WriteLine (a); }//调用:print(5); public static...原创 2018-04-28 17:39:09 · 258 阅读 · 0 评论 -
C#接口实现、调用,接口显式与隐式的区别,接口与密封类的区别
1、接口:用于描述一组类的公共方法(或属性),并不对方法作任何的实现。接口使继承于它的类的方法都具有统一的命名规范,同时可以用接口来实现“多继承”。(C#不支持多继承)。(1)、类继承了接口就必须实现接口中的所有成员和属性。(2)、不能实例化一个接口。(3)、接口中的方法不能直接去实现,必须在继承它的类中实现。2、接口中定义方法不能添加任何的访问修饰符,默认为公有。并且不能有static关键字。接...原创 2018-04-28 17:34:57 · 421 阅读 · 0 评论 -
C#数据类型,值类型,引用类型与转换
1、数据类型分类:值类型与引用类型值类型:简单类型(int,short,long,float,byte,double,char,decimal(16字节的小数));结构类型,枚举类型;引用类型:数组类型,类类型,字符串,接口,指针类型2、值类型:派生自System.ValueType.在存储在栈上;引用类型:直接从System.Object继承,被分配在堆上,变量保存的是实例数据的内存地址。区别:...原创 2018-04-28 17:30:21 · 780 阅读 · 0 评论 -
扑克算法
主程让我写个扑克牌算法练练手,要求给用户随机发13张牌,能判断对子,连子。 我当时的想法是写一个扑克牌的类,不同的花色用枚举表示,然后用常量来限制不同花色扑克牌的张数。后来功能确实能够实现,但时间复杂度很高,主程说如果是商业项目后续增加功能可能会出现很多隐藏Bug。 后来主程给我简单的讲了讲他算法的简易思路: (PS:真正做的时候数组不要用Int类型,用byte类型,这里只是为了更好理...原创 2018-09-28 17:43:36 · 2432 阅读 · 0 评论