问题标签 [explicit-interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
17 浏览

c# - Is there a way to initialize EII property within constructor?

Let's start with code from MS page:

I would like to change Middle in such way, the EII property is once initialized, something like this:

Above code does not compile, thus my question -- is there a syntax for doing this?

I am asking about syntax, because brute force way would be to declare private field and redirect ILeft.P getter to return data from it.

0 投票
1 回答
95 浏览

c# - 为什么 List 使用显式接口方法实现来实现非泛型接口方法?

下面是源代码Listhttps ://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs

您可以看到List使用显式接口方法实现(显式指定接口的名称)来实现非泛型Contains。但是我对显式接口方法实现的了解是,只有当有两个具有相同签名的接口方法时才这样做。

但是对于public bool Contains(T item)and public bool Contains(Object item),它们是不同的方法,因为它们具有不同的签名(通用参数和非通用参数),因此List将被实现为:

那为什么 List 使用显式接口方法实现来实现非泛型接口方法呢?在这种情况下,我看不出使用显式接口方法实现有什么好处。我在这里错过了什么吗?

0 投票
1 回答
131 浏览

c# - 为什么要列出声明 GetEnumerator() 和 IEnumerable.GetEnumerator()?

List为什么要定义这三个方法呢?

他们都在做同样的事情。仅仅拥有这个还不够吗:

0 投票
0 回答
35 浏览

c# - 传递给具有更高接口类型的方法时,显式接口实现不起作用

我有一个包含项目列表的类(实现IHasItems)。在特定场景中,我想通过显式实现隐藏这些项目IHiddenItems以返回空列表。

但是有一个现有的方法(PrintItems在这种情况下是 - ),输入参数类型是IHasItems. 因此,即使我将对象转换为IHiddenItems.

尝试这种方法的原因是我不想创建这个对象的原型并在原型实例中将其设置为空。

结果

预期的

没有修改PrintItems,它应该显示到控制台PrintItems method: 0

0 投票
1 回答
68 浏览

c# - 这个 C# 接口语法叫什么,它是什么意思

我正在研究一组相当复杂的接口,这些接口允许定义具有特定结构的对象。通过接口和泛型,它还允许我定义每个元素中可用的接口组合。该结构映射了我们背景中的某些内容,因此目标是在代码中重新创建结构,以便更好地理解代码实际操作的内容。

结果如下所示:

现在在实现具体类时,我在 Visual Studio 中单击了“自动实现”,它提出了一行我到目前为止还没有看到的代码(并且没想到会发生这种情况)。所以我正在寻找洞察它是如何工作的,以及我可以在哪里阅读/研究更多关于它的信息。

具体实现的相关部分有:

尤其是这两行让我感到困扰(尤其是最后一行):

第一行很清楚,正如我们所知

第二行不具有相同的可见性(尽管两者都是公共的),并且类型定义更复杂,并且在名称前有一个额外的点(这是我到目前为止还没有看到的部分)。