C# new Dictionary<string, object>() is IDictionary<object, object> 返回 false

标签 c#

例子:

void Main()
{
    var dic = new Dictionary<string, object>();

    Console.WriteLine(dic is IDictionary<object, object>); //False
    Console.WriteLine(dic is IDictionary<dynamic, dynamic>); //False
    Console.WriteLine(dic is IDictionary<string, object>); //True
}

string 不也是一个对象吗?为什么 dic is IDictionary<object, object>得到假。

最佳答案

String派生自 Object .但是IDictionary<string, object>不源自 IDictionary<object, object> .这就是它返回 false 的原因。您可能想阅读 .NET 中的协变和逆变概念 https://learn.microsoft.com/en-us/dotnet/standard/generics/covariance-and-contravariance

关于C# new Dictionary<string, object>() is IDictionary<object, object> 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54267355/

相关文章:

c# - 使用 Entity Framework 6 代码优先注释映射 xmltype oracle

c# - 媒体播放器最高效的内部数据库

c# - 参数化线程,理解lambda表达式

javascript - 页面重新加载时进行中的 Ajax 请求会发生什么

c# - 更改目标构建时 Visual Studio 2017 dotnet 崩溃

c# - 只有一个元素的数组到达 Controller

c# - RelayCommand 的重用代码

C# LIifxNet 切换光功率,LIFX

c# - 为什么对waveOutGetPosition的调用挂起?

c# - SQL Server Compact 3.5 如何使应用程序自增 id?