语言入门必学的基础知识你还记得么?

不管我们学习什么语言,一开始都是语法,对于面向对象的语言来讲,学习完语法之后,就是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 = Func_Test;

        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也算是让自己巩固了基础吧。

原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/8870540.html

时间: 2024-09-28 22:20:42

语言入门必学的基础知识你还记得么?的相关文章

【慕课网】php工程师学习计划之我的学习笔记——01 入门必学web基础 htmlcss基础课程 篇

为了进一步学习PHP,本周我选定了慕课网的PHP工程师学习计划, 从今天2015-07-06 10:24:47开始从头学习:计划本周尽快学习完成本课程,谨此作为笔记. 有个好的学习计划和思路非常非常重要,非常感谢慕课网提供本套学习计划,希望更多地学习平台能提供像这样全面一条龙学习思路清晰地教程. 计划图:链接 我的学习状况:2015-07-06 10:29:46 开始随记: php工程师学习计划笔记——01 入门必学web基础 htmlcss基础课程 篇 入门篇: text-align:cent

小白入门必学Python基础语法

最近开发中用到Python比较多,所以将Python的基础语法总结出来供Python入门者学习. Unicode Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求.Unicode规定所有的字符和符号最少由16位来表示(2个字节),即:2**16=65536 UTF-8 UTF-8(8-bi

WCF入门教程:WCF基础知识问与答(转)

学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太少,直到现在,我也认为自己不过是初窥WCF的门径而已. 学以致用”,如果仅仅是希望能够在项目中合理地应用WCF,那么对于程序员而言,可以有两种选择,一种是“知其然而不知其所以然”,只要掌握了WCF的基础知识,那么对于一般的应用就足够了.要做到这一点就很容易了,微软秉承了一贯的方式,将WCF这门技术优雅地呈现给

关于项目分组和项目合并——入门必学

项目分组:前台INDEX文件对应一个index.php单入口文件,后台ADMIN对应另外一个单入口文件,这种模式: 项目分组的劣势是:很多的配置文件.函数无法共用.所有我们开始用项目合并的方式来做: 步骤: 1.像之前一样建立单入口文件(只需要一个单入口文件): 2.建立公用配置文件(命名为config.php): 在APP/Conf文件夹下的配置文件中添加以下两个定义(其它的还一样): 'APP_GROUP_LIST'=>'Index,Admin',//开启分组 'DEFAULT_GROUP'

Web前端入门必学知识

入门主要有三个部分   一.html+css部分:      1.前端的入门门槛极低,体现在HTML和CSS上运行环境就是浏览器,html+css这部分特别简单,网上搜资料,书籍视频非常多.css中盒子模型,流动,block,inline,层叠,样式优先级等这些自学起来也是非常容易.最 后再深入了解下浏览器差异性,ie9以下兼容简单了解就行了,ie9以下浏览器被淘汰掉是趋势,低版本没必要浪费大量时间去学习兼容主流浏览 器,google chrome浏览器.firefox浏览器.safari浏览器

Thrift入门初探(2)--thrift基础知识详解

昨天总结了thrift的安装和入门实例,Thrift入门初探--thrift安装及java入门实例,今天开始总结一下thrift的相关基础知识. Thrift使用一种中间语言IDL,来进行接口的定义,下面来具体讲一下IDL可定义的几种常用数据类型和关键字. 常用数据类型及关键字 基本类型 thrift不支持无符号的类型,无符号类型可以简单理解为不能表示负数,只能表示正数的类型,像java的基本数据类型都是有符号的类型. byte:有符号字节 i32:32位有符号整数,此外还有i16,i64 do

大数据入门第一课 Hadoop基础知识与电商网站日志数据分析

var link="www.marenzy.top"//完整视频资源获取地址,复制链接在浏览器打开 var vx="aishangit666"//如链接失效可添加微信 本课程从Hadoop核心技术入手,以电商项目为依托,带领你从0基础开始上手,逐步掌握大数据核心技术(如:HDFS.YARN.MapReduce以及Hive),并使用这些技术进行实战,最终完成电商行为日志分析项目,让你轻松入门大数据! 物超所值的精品课程,只懂Java基础也能轻松入门大数据 知识覆盖全面

java入门必学:HTML和CSS

Java开发已经悄无声息的走进我们的生活中,无论是手机软件.手机Java游戏还是电脑软件等,只要你使用到电子产品就会碰到和Java有关的东西,更多的企业正采用Java语言开发网站,也吸引了好多志同道合的朋友开始加入Java开发的行列. 我们知道在Java的学习中,Javaweb是我们的必修阶段,而在Javaweb开发中,我们学习的第一课便是HTML5和CSS的入门基础.我们常说的要浏览的网页就是由HTML语言来编写的,而CSS就是能让我们的网页更加绚丽.通过HTML和CSS的编码来显示我们的网页

初学古琴入门需要掌握这些基础知识

"怎样学好古琴?"是一个很普通又很值得讨论的问题.这个问题在琴人范围内还可能存在着不尽相同的看法,莫衷一是,但古琴作为一种乐器,它和二胡.琵琶.钢琴.小提琴一样,学习进程是由浅人深.由易到难.由入门到深造,其规律与过程应该是一样的. 在操缦之初开指之时,习弹者应掌握好较为正确的演奏方法,懂得运指的基本原理.通过练习,理解并掌握其中的规则.习弹者可在教师的指导下仔细体会认真练习,使之方法正确,运力自如,音色圆润变化得当,姿势舒展大方.美观自然.其实讲究基本指法,运指的正确,是包括古琴在内