- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这可能是一个非常简单的问题,但有些东西对我来说没有意义。
给定这个类:
public class Person : ICloneable {
public object Clone()
{
Console.WriteLine("Hello, world");
return new Person();
}
}
为什么这样可以?
List<Person> people = new List<Person> { new Person() };
IEnumerable<ICloneable> clonables = people;
但这不是吗?
List<Person> people = new List<Person> { new Person() };
IList<ICloneable> clonables = people;
为什么我可以分配给 IEnumerable IClonable,而不是 IList ICloneable?
最佳答案
这称为协方差。 Eric Lippert 和 Jon Skeet(以及其他人)在回答这个问题时对协方差(及其双胞胎,逆变)做了一些很好的解释:Difference between Covariance & Contra-variance
基本上,您可以像枚举ICloneable
列表一样枚举Person
列表,不会出现问题因为您无法更改枚举。但是您不能将 Person
列表分配给 ICloneable
列表,因为这样您稍后可以尝试插入 ICloneable< 的一些其他派生词
在其中,这将导致严重违反类型安全。
关于c# - 无法将源类型 'List<Person>' 转换为 IList<ISomething>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26046286/
Person 是一个以 Parent 作为其子类的类。 考虑以下 2 个陈述: Person person = new Parent(); 父parent=(父)人; 第二个语句将 person 对象
像这样,我有一个对象: { 'person': { 'like': { 'color': 'red', 'food': 'rice' }, 'nam
对于下面的代码,我想知道为什么 Object.getPrototypeOf(person) 可以工作,但 person.getPrototypeOf(person) 不起作用?我认为规则是:如果对象没
我有 3 个 java 源文件。 Person.java FriendsList.java MyFriends.java FriendsList包含 Person 类型对象的数组列表以及将新 frie
我想我理解错误消息的意思,我有一个人,并试图将它转换为 HashMap,但这不是代码所说的?我不明白我做错了什么。当我阅读代码时,我没有发现任何问题..我已经坚持了一段时间了。如果我错过了一些基本的东
我知道以前在类似情况下曾有人问过这个问题,但是我是 C++ 的新手,无法弄清楚需要做什么或为什么必须这样做。基本上,我使用的是我创建的具有变量名称、年龄、高度和体重的 Person 对象。我需要对我创
我正在尝试编写从文件读取并添加到二叉树的程序,但是当我尝试编译时出现错误: "Error 1 'treePersons::display' : cannot convert parameter 1 f
我明白了 error: could not convert 'p1' from 'Person (*)()' to 'Person' 每当我使用默认构造函数时(当我创建 Person p1 时),我知
假设我有一个非常简单的类 Person,其中包含姓名和地址: public class Person { String name; String address; public
所以我刚开始学习 Crystal,因为我喜欢 Ruby 和 C,但我还不能掌握语法。我想我已经很接近了,但我被这个错误困住了。 没有重载匹配 Person 类型的 'Array(Person)#+'
我理解前两个陈述。但是,对于第三种说法,我想不通人是什么类型的人? IEnumerable(person) 还是 List(person)?我假设幕后有转换。有人可以解释一下语句 3 中使用了哪些技术
我有两个外部电话 这给出了 Future[Seq[People]] 它接受 person_id 并返回 person_status 作为 Future[String] 我需要使用第一个调用中可用序列中
在 HP Probook 4540S 笔记本(Win 7Prof 64 位)上安装 Delphi XE3 后,我在编译时遇到问题,该项目是一个空的 VCL 项目,表单上没有任何组件。起初,我收到“无效
我有类人: class Person{ private String name; public Person(String name) { this.name = na
我在尝试实现我的程序时遇到链接器错误 undefined reference to Person::Person。三个部分如下。我一直在努力修复它几个小时。我知道这可能很简单,只是我没有看到。但是我在
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
In function 'int main()': 41 14 [Error] no match for 'operator=' (operand types are 'Person' a
有没有XXXUtils我在哪里可以做 String s = XXXUtils.join(aList, "name", ","); 哪里"name"是 aList 中对象的 JavaBeans 属性.
我不知道以前有没有人问过这个问题,因为英语不是我的母语,我也不知道要搜索的关键字。 所以基本上我有以下输入元素, 我想将名称分成 3 个部分,例如 ["person", "0", "email"]。
我正在比较本地计算机中的证书,MMC.exe 允许我查看“当前用户”和“计算机”的证书。 我不明白为什么会有两个“个人”商店。有人可以解释为什么有两个,以及它们如何相互作用吗? 很高兴知道为什么其他文
我是一名优秀的程序员,十分优秀!