C#语法
Cuijiahao
cocos2d-x/u3d程序员
展开
-
c# 类的排序
IComparable一种特定于类型的通用比较方法,值类型或类通过实现此方法对特认定进行排序IComparable的作用是提供了一种比较两个对象的特定类型的方法。这是必需的如果您想要为对象提供任何排序功能。视为IComparable提供您的对象的默认排序次序。例如对于如果您有一个您的类型的对象的数组,并在该数组上调用Sort方法IComparable在排序过程中提供对象的比较。实现IComparable接口时, 必须实现CompareTo方法此接口由具有可排序值的类型实现。它要求实现类型定义单.原创 2021-04-07 11:33:38 · 510 阅读 · 0 评论 -
C# default关键字
在泛型中使用default,取决于泛型类型是引用类型还是值类型,引用类型的default将泛型类型初始化null,值类型的default将泛型类型初始化为0。在类型应用中可以通过default获得缺省值,如default(int)。在泛型类型中,由于泛型类型即可以是引用类型也可以是值类型,所以不能用null来表示默认值。这里通过default来进行。引用类型的default将泛型类型初始化null,值类型的default将泛型类型初始化为0。 class DocClass<T>原创 2020-09-22 19:39:10 · 296 阅读 · 1 评论 -
C# params参数数组
定义一个函数,用来取得数字的和,但是数字的个数不确定。解决方案:1,定义一个函数,参数传递过来一个数组;2,定义一个参数个数不确定的函数,这个时候我们就要使用参数数组。除了参数数组,所有函数的参数都是固定的,那么调用的时候,参数是一定要传递的class Program { //数组参数 //如果一个函数定义了参数,那么在调用这个函数的时候,一定要传递对应类型的...原创 2020-02-10 09:08:03 · 409 阅读 · 0 评论 -
C# 使用泛型和索引器来实现一个集合类列表MyList
有下面的方法和属性1、Capacity获取容量大小2、Add()方法添加元素3、Insert()方法插入元素4、[index]访问元素(索引器)5、Count属性访问元素个数6、RemoveAt()方法移除指定位置的元素7、IndexOf()方法取得一个元素所在列表中的索引位置 LastIndexOf()上面的方法是从前往后搜索,这个是从后往前搜索,搜索到...原创 2020-02-09 16:15:08 · 728 阅读 · 0 评论 -
C# 泛型
泛型是什么?通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。泛型类定义定义一个泛型类就是指的是,定义一个类,这个类中某些字段的类型是不确定的,这些类型可以在类构造的时候确定下来,举例:class ClassA<T> {//T代表一个数据类型,当使用classA进行构造的时候,需要制定T的类型 priv...原创 2020-02-09 10:31:08 · 80 阅读 · 0 评论 -
C# List列表的使用
列表List的创建和使用创建列表(列表可以存储任何类型的数据,在创建列表对象的时候首先要指定你要创建的这个列表要存储什么类型的)(泛型)List<int> scoreList = new List<int>();//创建了一个空的列表 通过类型后面的<>来表示这个列表存储的数据的类型var scoreList = new List<int>...原创 2020-02-09 09:51:40 · 357 阅读 · 0 评论 -
C# 面向对象编程-面试题
1.C#中的方法重写使用关键字(a)。override overload static Inherit2.以下的C#代码,试图用来定义一个接口:public interface IFile{ int A; int delFile() { A = 3; } void disFile();}...原创 2020-02-09 08:31:30 · 1234 阅读 · 0 评论 -
C# 值类型和引用类型
类型被分为两种:值类型(整数,bool, struct, char, 小数)引用类型(string, 数组 ,自定义的类,内置的类)值类型只需要一段单独的内存,用于存储实际的数据,(单独定义的时候放在栈中)引用类型需要两段内存第一段存储实际的数据,它总是位于堆中第二段是一个引用,指向数据在堆中的存放位置...原创 2020-02-08 17:38:39 · 86 阅读 · 0 评论 -
C# interface接口
定义和实现接口定义接口interface IFly{ void Fly(); void MethodA();}实现接口class Bird :IFly{ public void Fly() { } public void MethodA() { } ...原创 2020-02-08 14:31:51 · 101 阅读 · 0 评论 -
C# 关于访问修饰符public、protected、private、internal、static
修饰符修饰符,用来类型或者成员的关键字。修饰符可以指定方法的可见性。public 和private修饰字段和方法的时候,表示该字段或者方法能不能通过对象去访问,只有public的才可以通过对象访问,private(私有的)只能在类模板内部访问。protected 保护的,当没有继承的时候,它的作用和private是一样的,当有继承的时候,protected表示可以被子类访问的字段或...原创 2020-02-08 14:17:13 · 1269 阅读 · 0 评论 -
C# base派生类的构造函数
1,在子类中调用父类的默认构造函数(无参)(会先调用父类的,然后是子类的)public class MyDerivedClass{ public MyDerivedClass():base(){ //do something }}在这里 :base()可以直接不写,因为默认会调用父类中的默认构造函数 2,调用有参数的构造函数public cla...原创 2020-02-08 13:58:35 · 519 阅读 · 0 评论 -
C# sealed密封类和密封方法
C#允许把类和方法声明为 sealed。 对于类,表示不能继承该类sealed class BaseCLass { //这里声明了一个密封类 public virtual void Move() { }}class DerivedClass:BaseCLass {//sealed密封类无法被继承 }对于方法,...原创 2020-02-08 13:47:10 · 187 阅读 · 0 评论 -
C# abstract 抽象类
C#允许把类和函数声明为 abstract。 抽象类不能实例化,抽象类可以包含普通函数和抽象函数,抽象函数就是只有函数定义没有函数体。 显然抽象函数本身也是虚拟的Virtual(只有函数定义,没有函数体实现)。类是一个模板,那么抽象类就是一个不完整的模板,我们不能使用不完整的模板去构造对象。 abstract class Bird//一个抽象类 就是一个不完整的模板{ ...原创 2020-02-07 16:37:07 · 174 阅读 · 0 评论 -
C# this和base关键字
thisthis可以访问当前类中定义的字段,属性和方法,有没有this都可以访问,有this可以让IDE-VS编译器给出提示,另外当方法的参数跟字段重名的时候,使用this可以表明访问的是类中的字段。basebase可以调用父类中的公有方法和字段,有没有base都可以访问,但是加上base.IED工具会给出提示,把所有可以调用的字段和方法罗列出来方便选择...原创 2020-02-07 16:22:52 · 130 阅读 · 0 评论 -
C# new 隐藏方法
如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字进行声明)基类class MyBaseClass{ public void Move() { Console.WriteLine("这里是MyBaseClass的公有Move方法"); }}...原创 2020-02-07 16:15:32 · 457 阅读 · 0 评论 -
C# virtual 虚方法
把一个基类函数声明为virtual,就可以在任何派生类中重写该函数:class MyBaseClass{ public virtual string VirtualMethod() { return "Method is called in base class"; }}在派生类中重写另外一个函数时,要使用override关键字显示声明...原创 2020-02-07 15:59:18 · 171 阅读 · 0 评论 -
C# 属性的定义
属性的定义属性的定义结构: public int MyIntProp{ get{ // get code } set{ //set code } }1,定义属性需要名字和类型2,属性包含两个块 get块和set块3,访问属性和访问字段一样,当取得属性的值的时候,就会调用属性中的get块,所以get块,类型需要一个返回值就是属性的类型;当我们去给...原创 2020-02-07 13:58:01 · 1592 阅读 · 0 评论 -
c# delegate委托的使用
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _053_委托的使用 { //定义一个委托跟函数差不多,区别在于 //1,定义委托需要加上delegate关键字 //2...原创 2020-02-06 08:55:20 · 131 阅读 · 0 评论 -
c#委托delegate的使用
原型//Action原型namespace System{ public delegate void Action(); public delegate void Action<T1>(T1 arg1); public delegate void Action<T1, T2>(T1 arg1, T2 arg2); public de...原创 2020-01-02 10:51:29 · 197 阅读 · 1 评论 -
interface接口
//接口类public interface IHurtObject { //参数:1、伤害值,2、攻击者ID void SendHurtRequest(int hurtValue,int ObjectID);}public class TowerModel : MonoBehaviour,IHurtObject { //继承接口 public void ...原创 2019-12-26 14:08:30 · 82 阅读 · 0 评论 -
using的内存垃圾自动回收用法
//using:{}之间的代码执行完毕之后,()里的内存就会被回收using (ISession session = NHibernateHelper.OpenSession())//获取会话{ using (ITransaction transaction = session.BeginTransaction())//事务 { 代码... }}...原创 2019-12-11 15:15:20 · 222 阅读 · 0 评论 -
C#中virtual和abstract的区别
virtual和abstract都是用来修饰父类的,通过覆盖父类的定义,让子类重新定义。(1)virtual修饰的方法必须有实现(哪怕是仅仅添加一对大括号),而abstract修饰的方法一定不能实现。(2)virtual可以被子类重写,而abstract必须被子类重写。(3)如果类成员被abstract修饰,则该类前必须添加abstract,因为只有抽象类才可以有抽象方法。(4)无法创建a...原创 2019-12-11 15:07:27 · 103 阅读 · 0 评论