当前位置: 首页 > 面试题库 >

当您编辑界面时,这叫什么?

闻人浩波
2023-03-14
问题内容

我正在通过一个LitJSON库。在代码中有很多段,例如

 public class JsonData : IJsonWrapper, IEquatable<JsonData>

 #region ICollection Properties
            int ICollection.Count {
                get {
                    return Count;
                }
            }
    #end region

对于一种方法,我知道重写/重载的工作方式,但是在上面的示例中,代码显示为:int ICollection.Count

我对方法签名的格式不熟悉。编码人员是否正在尝试明确声明其ICollection.Count接口?

您能否解释一下这就是所谓的(仍在覆盖?)。


问题答案:

这称为显式接口实现。主要用于消除在不同接口中存在的具有相同名称的成员的歧义,这也需要不同的实现。

认为你有

interface ISomething1
{
    void DoSomething();
}

interface ISomething2
{
    void DoSomething();
}

class MyClass : ISomething1, ISomething2
{
    void ISomething1.DoSomething()
    {
        //Do something
    }

    void ISomething2.DoSomething()
    {
        //Do something else
    }
}

没有Explicit接口实现,您将无法DoSomething为我们实现的两个接口提供不同的实现。

如果要实现某个接口,并且想在客户端中隐藏它(在某种程度上),则可以使用显式实现。ArrayIList显式实现接口,这就是隐藏的方式IList.AddIList.Remove等等。不过,如果将其强制转换为IList类型,则可以调用它。但是在这种情况下,您最终将获得异常。

通过显式实现实现的成员在类实例中不可见(即使在类内部)。您需要通过接口实例访问它。

MyClass c = new MyClass();
c.DoSomething();//This won't compile

ISomething1 s1 = c;
s1.DoSomething();//Calls ISomething1's version of DoSomething
ISomething2 s2 = c;
s2.DoSomething();//Calls ISomething2's version of DoSomething


 类似资料:
  • 问题内容: 我在Java中注意到,您可以将具有object…作为参数的函数,然后method将任意数量的对象作为参数并将其视为数组。这个叫什么?我一直在尝试搜索它,但似乎…被搜索引擎忽略。我似乎记得C中的printf做同样的事情。 谢谢。 问题答案: 叫做varargs

  • 编程时,工作流程如下: 更改文件并保存。 编译器或解释器。 看看结果 但是也有一个工作流程是这样的:(实际上它类似于处理我正在输入的这个堆栈溢出问题窗口) 启动一个程序,监视文件目录的更改。 我在寻找第二个工作流程通常被称为什么。

  • 通过以下任意方式,均可启动 CampusBuilder 场景编辑器,进入场景编辑界面。 。 如需新建场景,点击主界面新建按钮。 如需编辑现有场景,点击场景菜单 > 编辑场景,或直接双击场景。 系统加载完成后,即可在 CampusBuilder 中编辑场景。通过 CampusBuilder 编辑界面窗口下方的进度条,可查看加载进度。 CampusBuilder 场景编辑界面包括顶部菜单栏和功能控件、

  • 在Hugo模板中,我知道您可以使用< code>function param调用函数: 但在文档中,我还看到您还可以: 我从未遇到过这种调用函数的方式(在Ruby/Python等语言中)。这是围棋特有的,还是雨果特有的?这种调用函数的方式是如何调用的?另外,如果你有不止一种类型的论点,你能做到吗?

  • 我有一个Ggogle表格,用于接收订单并在图表中显示它们,以及价格、接收日期、订单ID等信息。我需要制作一个界面,使我能够远程发送订单到表格,并远程编辑它们。我曾想过使用谷歌表单来完成这项工作,但据我所知,没有办法编辑这样的表单,只能发送订单。最好的方法是什么?

  • 观察:对于每个节点,我们可以重复使用它到目的地的最小路径,这样我们就不必重新计算它(dp)。此外,当我们发现一个循环时,我们检查它是否为负。如果不是,它不会影响我们的最终答案,我们可以说它没有连接到目的地(阉羊是否)。 伪代码: > 给定源节点u和目标节点v 初始化 Integer dp 数组,该数组存储相对于源节点的最小到达点节点的最小距离。dp[v]= 0,其他一切都是无限的 初始化boole