新手,有写概念的东西不好理解,希望高手讲解下了,谢谢。
public interface ICallBack
{ void run();}class CallBackClass:ICallBack{public void run()
{ //输出当前时间
System.Console.WriteLine(DateTime.Now );
}
}Controller类中有一个私有的ICallBack类型的字段,用于存放回调对象的引用,此对象引用在构造函数中传入。class Controller{ public ICallBack CallBackObject = null;// 引用回调对象 这句是什么意思呢? 语法可能我不太懂? public Controller(ICallBack obj) { this.CallBackObject = obj; 这个构造函数是不是 给 上面定义的 接口 CallBackObject变量 赋值呢 } public void Begin() { Console.WriteLine("敲任意键显示当前时间,ESC键退出...."); while (Console.ReadKey(true).Key != ConsoleKey.Escape) { CallBackObject.run(); 这句是什么意思呢? CallBackObject这个借口定义的把,那怎么执行CallBackClass类RUN方法了? 能告诉吗? } }}Controller类的Begin()方法启动整个处理过程。调用代码如下:class Program{ static void Main(string[] args) { //创建控制器对象,将提供给它的回调对象传入 Controller obj = new Controller(new CallBackClass()); // 这个构造函数传递的是CallBackClass类,怎么和接口联系呢? 能告诉我语法吗? public Controller(ICallBack obj) 这里是接口的哦。 //启动控制器对象运行 obj.Begin(); }}
public interface ICallBack
{ void run();}class CallBackClass:ICallBack{public void run()
{ //输出当前时间
System.Console.WriteLine(DateTime.Now );
}
}Controller类中有一个私有的ICallBack类型的字段,用于存放回调对象的引用,此对象引用在构造函数中传入。class Controller{ public ICallBack CallBackObject = null;// 引用回调对象 这句是什么意思呢? 语法可能我不太懂? public Controller(ICallBack obj) { this.CallBackObject = obj; 这个构造函数是不是 给 上面定义的 接口 CallBackObject变量 赋值呢 } public void Begin() { Console.WriteLine("敲任意键显示当前时间,ESC键退出...."); while (Console.ReadKey(true).Key != ConsoleKey.Escape) { CallBackObject.run(); 这句是什么意思呢? CallBackObject这个借口定义的把,那怎么执行CallBackClass类RUN方法了? 能告诉吗? } }}Controller类的Begin()方法启动整个处理过程。调用代码如下:class Program{ static void Main(string[] args) { //创建控制器对象,将提供给它的回调对象传入 Controller obj = new Controller(new CallBackClass()); // 这个构造函数传递的是CallBackClass类,怎么和接口联系呢? 能告诉我语法吗? public Controller(ICallBack obj) 这里是接口的哦。 //启动控制器对象运行 obj.Begin(); }}
解决方案 »
- 关于PGP加密,C#中如何调用PGP加密
- winform 为何本机连接远程的MYSQL可以,但换台机器就连不上了
- 万网的sql数据库支持sql的导入导出功能吗?
- C#异步发送多个文件的问题
- 【ALL】C#如何通过DOS命令重启COM+组件?
- 关于拖拽的问题,多个文件的打开
- 如何通过Web Service实现对Web Service所在服务器的文件操作?
- [高手请进,看看这段代码有没有后遗症]将Winform添加到Panel里!
- C# ExpectedException
- C# 怎么用windowsmediaplayer 播放资源文件中的视频
- 求个简单的触发器 给个完整编码带注释
- 怎样从List<Model>中比较取数,急!!!!!!!1
public interface ICallBack
{
void run(); //定义ICallBack必须有功能run
}class CallBackClass : ICallBack //CallBackClass承诺具有ICallBack所定义的功能
{
public void run()
{
System.Console.WriteLine(DateTime.Now);
}
}class Controller
{
public ICallBack CallBackObject = null; public Controller(ICallBack obj) //构造函数需要一个具有ICallBack所定义的功能obj,obj的具体类型是不关心的,保存到CallBackObject
{
this.CallBackObject = obj;
} public void Begin()
{
Console.WriteLine("敲任意键显示当前时间,ESC键退出....");
while (Console.ReadKey(true).Key != ConsoleKey.Escape)
{
CallBackObject.run(); //CallBackObject必定具有run的功能,调用run
}
}
}
void run(); 这是你的接口的方法
class CallBackClass : ICallBack
{
public void run()
{
System.Console.WriteLine(DateTime.Now);
}
}
CallBackClass :继承了你接口里的功能,public void run()是实现你接口中的方法了。
{
public void run()
{
System.Console.WriteLine(DateTime.Now);
}
}
一个实例化为CallBackClass类实例的对象,它同时也就是一个ICallBack类的实例对象,这是面向对象的继承概念。CallBackClass 类中实现run方法,根据c#的语法,编译器就可以知道这是实现ICallBack的run。(这是因为它是interface,而如果ICallBack如果是class,则需要在CallBackClass 中写 override 关键字来标记 run 方法)。传递符合ICallBack类型的对象实例,但是由于它是interface,而c#编译器只允许class才能创建实例化对象,所以实际上这个对象的真实类型只会是ICallBack的扩展类型。这种用后继类型对象来替代对象参数的做法,叫做多态。
不意味着CallBackObject 变量的真实类型,而只是意味着这个变量指向的对象兼容于 ICallBack 而已。
{
}class 刘著:男,I伪娘
{
}如果说我们现在 要举行一个比赛,姑且就叫 “纯爷们专场PK赛” 或 “伪娘专场PK赛”public 伪娘专场PK赛(I伪娘 参赛选手)那么我们这么调用 伪娘专场PK赛(new 刘著()) 这样有何不可??
谢谢 sp1234讲的语法我理解一点了 在看wanghui0380 解析也看看。