c语言如何写欧姆定律并计算(的协变和逆变吗)
c语言如何写欧姆定律并计算(的协变和逆变吗)
2024-07-03 01:38:12  作者:滒颩采畩舊  网址:https://m.xinb2b.cn/sport/muf456007.html

从C# 4.0开始,泛型接口和泛型委托都支持协变和逆变,由于历史原因,数组也支持协变。里氏替换原则:任何基类可以出现的地方,子类一定可以出现。

协变(out)协变:即自然的变化,遵循里氏替换原则,表现在代码上则是任何基类都可以被其子类赋值,如Animal = Dog、Animal = Cat使用out关键字声明(注意和方法中修饰参数的out含义不同)被标记的参数类型只能作为方法的返回值(包括只读属性)在没有协变时:abstract class Animal {} class Dog : Animal {} class Cat : Animal {} interface IPoppable<T> { T Pop(); } class MyStack<T> : IPoppable<T> { private int _pos; private readonly T[] _data = new T[100]; public void Push(T obj) => _data[_pos ] = obj; public T Pop() => _data[--_pos]; } 以下代码是无法通过编译的var dogs = new MyStack<Dog>(); IPoppable<Animal> animals1 = dogs; // 此处会发生编译错误 Stack<Animal> animals2 = dogs; // 此处会发生编译错误 此时,我们如果需要为动物园饲养员新增一个输入参数为Stack<Animal>饲喂的方法,一个比较好的方法是新增一个约束泛型方法:class Zookeeper { public static void Feed<T>(IPoppable<T> animals) where T : Animal {} } // 或者 class Zookeeper { public static void Feed<T>(Stack<T> animals) where T : Animal {} } // Main Zookeeper.Feed(dogs);现在,C#增加了协变使IPoppable<T>接口支持协变// 仅仅增加了一个 out 声明 interface IPoppable<out T> { T Pop(); } 简化Feed方法class Zookeeper { public static void Feed(IPoppable<Animal> animals) {} } // Main Zookeeper.Feed(dogs); 协变的天然特性——仅可作为方法返回值,接口(或委托)外部无法进行元素添加,确保了泛型类型安全性,所以不用担心Dog的集合中出现Cat常用的支持协变的接口和委托有:IEnumerableIEnumeratorIQueryableIGrouping<out TKey, out TElement>Func等共17个Converter<in TInput, out TOutput>IEnumerable<Dog> dogs = Enumerable.Empty<Dog>(); IEnumerable<Animal> animals = dogs; var dogList = new List<Dog>(); IEnumerable<Animal> animals = dogList;另外,由于历史原因,数组也支持协变,例如var dogs = new Dog[10]; Animal[] animals = dogs; 但是无法保证类型安全性,以下代码可正常进行编译,但是运行时会报错animals[0] = new Cat(); // 运行时会报错逆变(in)逆变:即协变的逆向变化,实质上还是遵循里氏替换的原则,将子类赋值到基类上使用in关键字声明被标记的参数类型只能作为方法输入参数(包括只写属性)例如:abstract class Animal {} class Dog : Animal {} class Cat : Animal {} interface IPushable<in T> { void Push(T obj); } class MyStack<T> : IPushable<T> { private int _pos; private readonly T[] _data = new T[100]; public void Push(T obj) => _data[_pos ] = obj; public T Pop() => _data[--_pos]; } // Main var animals = new MyStack<Animal>(); animals.Push(new Cat()); IPushable<Dog> dogs = animals; dogs.Push(new Dog()); 逆变的天然特性——仅可作为方法输入参数,接口(或委托)无法进行元素获取,即只能将子类赋值到父类上,进而保证了类型安全性。另外,常用支持逆变的接口和委托有:IComparerIComparableIEqualityComparerAction等共16个PredicateComparisonConverter<in TInput, out TOutput>

Action<Animal> animalAction = new Action<Animal>(a => { });Action<Dog> DogAction = animalAction;

c语言如何写欧姆定律并计算(的协变和逆变吗)(1)

作者:xiaoxiaotank

出处:https://www.cnblogs.com/xiaoxiaotank/

  • 田螺鸡煲做法(田螺鸡煲的烹饪方法)
  • 2024-07-03田螺鸡煲的烹饪方法材料:鸡,田螺,春笋,芹菜,莴苣,胡萝卜田螺用水养两天,让田螺吐净泥沙(在水里滴两滴油会吐得快一点),烧前刷干净,再用钳子把尾部剪掉春笋用淡盐水烧开,去涩味先将葱姜,辣椒,蒜头煸香,然后把鸡块放入油锅。
  • 美丽的红海湾畔:活力红海湾今朝更美丽
  • 2024-07-03美丽的红海湾畔:活力红海湾今朝更美丽风光旖旎的金屿滩旅游区一角黄小斯摄文旅康养新业态,还看今朝红海湾2016年以来,红海湾经济开发区经济发展提质冲刺,2016年—2020年全区GDP年均增长7.5%,固定资产投资年均增长13.8%,取得。
  • 李陵一生的悲情 为什么会落得埋骨异域
  • 2024-07-03李陵一生的悲情 为什么会落得埋骨异域李陵是汉武帝时候的西汉将领他出身于军人世家,他的爷爷就是赫赫有名的李广他本人也拥有卓越的军事才能,在与匈奴的战争中立下了战功可是,这样一位才能出众的将军,最后落得个投降匈奴,流落异域,全家被族灭的下场。
  • 腾讯微博会取消运营吗(腾讯近期多次申请)
  • 2024-07-03腾讯近期多次申请(观察者网讯)观察者网7月15日通过企查查平台查询发现,腾讯公司于7月8日申请注册“微博”商标,目前该商标状态为“注册申请中”此外,企查查平台显示,腾讯公司还曾于今年2月、去年8月等多次申请“微博”商。
  • 李子干家常的制作方法(在家怎么制作李子干)
  • 2024-07-03在家怎么制作李子干挑选李子,尽量选择味道酸甜,颜色鲜艳明亮的李子,这样做出来的李子干味道更好李子去核,李子去核的方法有多种,可以采用最简单的方式去掉李子核李子去核之后,应该用清水将李子冲洗一遍,用清水冲洗李子可达到杀菌。
  • 汉ev千山翠限量版suv(试驾汉EV千山翠限量版)
  • 2024-07-03试驾汉EV千山翠限量版近日,我们试驾了一下2022款比亚迪汉EV千山翠限量版,先简单总结一下:1、这个千山翠颜色对光线要求极高,一般的光线照射看起来显示不出它的特别2、新车开车起来和之前区别不大,一直都挺好开的3、OTA更。
  • 李小龙的成长史(那个时候的众人偶像李小龙)
  • 2024-07-03那个时候的众人偶像李小龙李小龙为人所知是作为一名功夫巨星及武术技击家,他曾融合多门武术,自创截拳道在众多中国功夫流派中,对李小龙影响最大的流派是咏春拳在李小龙的青少年时代,李小龙曾拜咏春拳的宗师叶问为师随着李小龙成为一代传奇。
  • 武汉马应龙大健康(武汉百年老字号马应龙)
  • 2024-07-03武汉百年老字号马应龙提起马应龙,大家很容易想到痔疮膏其实,有着439年历史的武汉“中华老字号”企业——马应龙药业集团股份有限公司,早已围绕传承创新,精准把握用户需求和趋势方面,低调“裂变”:不仅品种增加,延长产业链,而且。
  • 海带豆腐汤的家常做法大全(海带和豆腐做出的营养汤品)
  • 2024-07-03海带和豆腐做出的营养汤品海带豆腐汤初蕴小厨娘要给大家做一道宝宝辅食,海带豆腐汤这道辅食的营养价值很高,豆腐中含有丰富的钙,处于哺乳期的妈妈们经常喝这道汤,能有效提高母乳的含钙量当然,妈妈们也可以做给自己的小宝贝喝,两岁以上宝。
  • 福田风景g5详解(和昌河M70一起感受春天的最美气息)
  • 2024-07-03和昌河M70一起感受春天的最美气息“中国最美乡村”──婺源,无人不知,在印象中是一个被大片金灿灿的油菜花田所包围的世外桃源怀揣着这样的想象,天涯君参加了北汽昌河“婺里看花,阳春探源”试驾之旅,感受春天的最美气息此次昌河的试驾车型分别为。