前言 简单整理一下逆变和协变. 正文 什么是逆变和协变呢? 首先逆变和协变都是术语. 协变表示能够使用比原始指定的派生类型的派生程度更大的类型. 逆变表示能够使用比原始指定的派生类型的派生程度更小的类型. 这里student 继承 person. 这里这个报错合情合理. 这里可能有些刚入门的人认为,person 不是 student 的父类啊,为什么不可以呢? 一个列表student 同样也是一个列表的 person啊. 这可能是初学者的一个疑问. 但是实际情况是list 是一个类型, list…
前言 简单介绍一下什么是委托. 正文 以前也写过委托,这次算是重新归档,和新的补充吧. https://www.cnblogs.com/aoximin/p/13940125.html 有些人说委托是函数指针的包装,也有些人说委托是一个方法或多个方法的引用. 这都是没有问题,委托是一个概念,微软官方文档说委托是一种引用类型,表示对具有特定参数列表和返回类型的方法引用. 我觉得太啰嗦了,实际上就是方法的引用. 上面都是委托的概念,但是实现方式每种语言可能都不一样. 比如c++ 和 c 用的是函数指针…
前言 简单介绍一下订阅发布与事件. 正文 先来看一下委托的订阅与发布. public delegate void TestDelegate(); public class Cat { public TestDelegate testDelegate; public void call() { testDelegate?.Invoke(); } } public class BlackMouse { public void listen() { } } public class WhiteMous…
前言 在上一章中介绍了什么是反射: https://www.cnblogs.com/aoximin/p/16440966.html 正文 上一节讲述反射的基本原理和为什么要用反射,还用反射的优缺点这些. 其二者的本质是一致的,都是先获取到type(元数据)然后在进行创建实例. 下面那个好理解看下上面那个吧. 其实还是调用了activator: 说另外一个故事,是先有对象,后执行构造方法.还是先执行构造方法后有对象呢?到底是编译行为还是运行行为呢? 其实先创建对象,然后再进行构造函数. 而一切初始…
前言 在上一章中介绍了什么是反射: https://www.cnblogs.com/aoximin/p/16440966.html 正文 上一节讲述反射的基本原理和为什么要用反射,还用反射的优缺点这些. 其二者的本质是一致的,都是先获取到type(元数据)然后在进行创建实例. 下面那个好理解看下上面那个吧. 其实还是调用了activator: 说另外一个故事,是先有对象,后执行构造方法.还是先执行构造方法后有对象呢?到底是编译行为还是运行行为呢? 其实先创建对象,然后再进行构造函数. 而一切初始…
前言 重学c#系列继续更新,简单看一下字典的源码. 看源码主要是解释一下江湖中的两个传言: 字典foreach 顺序是字典添加的顺序 字典删除元素后,字典顺序将会改变 正文 那么就从实例化开始看起,这里我们假定key 是string 情况下开始看. 一般我们之间实例化: Dictionary<string, string> keys = new Dictionary<string, string>(); 那么看下内部的实例化是怎么样的. public Dictionary() :…
1.简介 今天这一篇宏哥主要是讲解一下,如何使用list容器来遍历单选按钮.大致两部分内容:一部分是宏哥在本地弄的一个小demo,另一部分,宏哥是利用JQueryUI网站里的单选按钮进行实战. 2.demo准备 2.1demo页面的HTML代码 1.这里宏哥为了省事节约时间就直接用上一篇中那个radio.html.如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti…
前言 什么是c#呢? 首先你是如何读c#的呢?c sharp?或者c 井? 官方读法是:see sharp. 有没有发现开发多年,然后感觉名字不对. tip:为个人重新整理,如学习还是看官网,c# 文档天下无敌. 正文 c#和java一样,他们之间有很多故事,尤其是官司,c#同样是一门面向对象的语言,同样也支持面向组件编程. 复制一下面向对象和面向组件编程的概念: 面向对象技术的基础是封装--接口与实现分离,面向对象的核心是多态--这是接口和实现分离的更高级升华,使得在运行时可以动态根据条件来选…
前言 前文提及到了一些基础的linq的基础,那么这一节是一些补充. 正文 关于一个orderby的问题. 比如我们输入两个order by. 这里告诉我们多个order by是没有意义的,如果多个那么就是最后一个是有意义的. 这里要使用,不要去记最后一个是有意义的,这会让你的思维混乱,记得用一个orderby就好.用完order by之后就可以用then by了. 这里提及一下原理,前面提及到包装器,为什么生效的是最后一个呢. 通过包装成一个OrderedEnumerable: 然后foreac…
前言 interface(即接口),是Go语言中一个重要的概念和知识点,而功能强大的reflect正是基于interface.本文即是对Go语言中的interface和reflect基础概念和用法的一次梳理,也算是我阶段学习的总结,以期温故而知新. interface(接口) 定义 在Go语言中,如果自定义类型(比如struct)实现了某个interface中的所有方法,那么就可以说这个类型实现了这个接口.接口可如下定义: type 接口名称 interface { method1(参数列表)…