当前位置:
首页 > Python基础教程 >
-
C#教程之语言入门必学的基础知识你还记得么?
不管我们学习什么语言,一开始都是语法,对于面向对象的语言来讲,学习完语法之后,就是OOP了,主要还是三大概念:继承,多态,封装。而且我们经常也会遇到一些面试题,会考察我们父子类之间的继承关系等。
这段时间深造ASP.NET-MVC框架,研读<<asp.net-mvc框架揭秘>>一书的时候,感觉到了自己的不足与渺小。尽管大三就看过这本书,但那时候看的懵逼,半知半解吧。再过了差不多一年之后再回头看这本书,学到了不同的知识,也看到了不同的一面,这说明自己也是在逐步提升的。这两天研读Controller激活原理的时候,深入的思考了一下,下载了源码看,发现看的很是懵逼啊,<<揭秘>>一书尽管一开始就写了个简单地mvc框架,但是相比较于源码中的代码还是缩减了很多,不过我看源码还是看的很懵逼,主要还是各个类之间的实现以及解耦的设计太好了,有一部分我特别不懂,于是自己写了个demo分析,分析完之后发现原来就是父子类之间的继承关系而已,以及C#特有的委托特性。不多说,直接上我的demo:
using System; namespace ConsoleApp1 { public class MyTest2 { public MyTest2(Func<string> func) { if(func==null) { throw new ArgumentNullException("error ... "); } func(); Console.WriteLine("successful ... "); } } public class MyTest { public Func<string> _func = () => null; private static MyTest _instance = new MyTest(); public MyTest() : this(null) { Console.WriteLine("Construction .... "); } public MyTest(MyTest2 s) { MyTest2 _s = s ?? new MyTest2(_func); } public static MyTest Current { get { return _instance; } } public static string text { get { return "text .... "; } } public void Beta() { Console.WriteLine("function be called"); } public static string Func_Test() { return null; } } class Program { static void Main(string[] args) { MyTest.Current.Beta(); Console.Read(); } } }
我一开始就看不懂在_func属性明明就是返回来了null,在MyTest2中的if判断应该成立啊,后来断点调试看了下:
这是内存地址啊,后来我改了下:
public Func<string> _func = () => null;
改成了:
public Func<string> _func = Func_Test;
后来才反应过来,原来传递的参数根本就是一个函数地址而已,if中的null是用来判断是不是没有传参的。
其次就是构造函数了,我已开始比较纳闷MyTest的第二个构造函数是怎么调用的,后来想想原来是第一个构造函数继承自了this(null),引发了调用!
通过这个demo也算是让自己巩固了基础吧。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式