-
public class luiproblemlocateManager:IluiproblemlocateManager{}
这是一个接口,接口只能用来被实现,所以这里用函数让它被继承
查看全部 -
加“_" 表示私有化
查看全部 -
接口简介:
查看全部 -
密闭类和密闭方法:
sealed密闭过的方法再派生类中不能再通过override重写同名方法
查看全部 -
抽象方法
比虚方法还要更进一层,不能具有实体。
举例:
abstract public void spirits();
抽象类
abstract class Animal
{
abstract public void spirits();
}
c抽象方法必须包含在抽象类里面
查看全部 -
依赖倒置原则:
程序设计要依赖抽象(Pet)类,而不依赖于具体类(Dog)。
调用哪个类(基类还是派生类)的函数取决于声明一个类时引用的是哪个类型的类。
查看全部 -
上述编程实例举例,C#继承语法:
public/protected/private ChildClass:ParentClass
{
}查看全部 -
面向对象-特点:封装、继承、多态
面向对象-优点:易维护、易扩展、易开发
面向对象-方法:掌握面向对象的核心思想,使用面向对象的语言技巧
查看全部 -
发布者:通知某件事情发生的
订阅者:对某件事情关注的
触发:事件发生时,会通知所有关注该事件的订阅者
注册:想在事件发生时被通知,必须注册以表示关注
事情发生时,通知订阅者,就是调用订阅者的注册函数。注册,就是高数发布者调用哪一个注册函数。
事件声明:
delegate void Handler();
public event Handler NewDog; //Handler 委托类型 NewDog 事件名
//NewDog是一个成员,并且会被隐式自动初始化为null
事件订阅:
NewDog += 方法 //订阅
NewDog -= 方法 //取消订阅
//方法可以是,实例方法,静态方法,匿名方法、Lambda表达式
事件触发:
if(NewDog!=null)
{
NewDog();
}
事件可以理解成是一种封装的受限制的委托,事件是对进行的一种委托的封装,委托中保存着实际订阅者注册的函数,事件触发是调用的是委托当中持有的函数
查看全部 -
匿名方法
delegate void ActCute();
ActCute del;
del = delegate(参数列表){方法体};
Lambda表达式
del=(参数列表)=>{方法体};
查看全部 -
委托:持有一个或者多个方法的对象,并且该对象可以执行,可以传递。
声明委托类型 delegate void ActCute();//委托类型是一种引用类型
定义委托类型的对象 ActCute actCute;
给委托对象赋值
class Dog
{
public void WagTail(){...}
}
actCute = dog.WagTail;
使用委托类型 actCute();//像调用函数一样使用委托类型
查看全部 -
字典Dictionary<Tkey,Tvalue>
字典容器存储的是一系列的键值对,每个值对应一个唯一的键。
键的意义在于我们可以通过键相对高效的访问到底。
字典操作:
数量 Count
添加 Add(key,value)
删除 Remove
访问 [key]
栈:先进后出,后进先出
出栈 Pop
入栈 Push
获取栈顶元素 Peek
队列:先进先出
出队 Dequeue
入队 Enqueue
查看全部 -
集合:一种存放多个数据的容器类型。
最简单的 集合:数组Array(完整的类型是System.Array)
预定义常用集合:
动态数组:ArrayList
列表:List
字典:Dictionary
队列:Queue
栈:Stack
动态数组ArrayList:
优点:
1、初始化,可以不指定大小;
2、获取长度,使用Count属性;
3、添加Add;
4、删除Remove(根据对象),RemoveAt(根据索引);
5、访问 [index]。
缺点:
1、比数组耗费更多的内存;
2、存取速度不如数组那么快;
3、Object装箱、拆箱,性能损耗。
List<T>
不会有装箱拆箱的性能问题,但是存取速度较慢。
查看全部 -
泛型接口:泛型接口允许我们将接口成员的参数和返回类型设置为泛型参数的接口。
语法:
interface IMyself<T>
{
T Myself(T self); //泛型参数可以出现在泛型成员的定义当中,可以出现在参数位置,也可以出现在返回值位置,可以接一个泛型参数,也可以接多个泛型参数
} //和反省语法类似
实现泛型接口语法:
class A: Imyself<A>
{
public A Myself(A self); //泛型参数可以是实现类本身或者是其他类型
}
class A<T>: IMyself<T>
查看全部 -
约束:缩小泛型参数的范围。
只有添加了约束,才能调用泛型参数中(比如T)的方法。
约束的类型:
类名,改类或者继承改类的类;
class,任何类;
struct,任何值;
接口名,该接口类型或任何实现该接口的类型;
new(),带有无参共有构造函数的类。
约束叠加规则:
A、主约束,类名,class,struct,只能由1个;
B、接口约束,任意多个;
C、构造约束。
三个约束可以三个都有,也可以一个都没有。
使用where来进行约束。
void Cage<T> where T:Pet,IClimbTree,new()
{...}
查看全部
举报