可选参数和继承

2023-11-23

我了解可选参数,并且非常喜欢它们,但我想更多地了解如何将它们与继承的接口一起使用。

附件A

interface IMyInterface
{
    string Get();
    string Get(string str);
}

class MyClass : IMyInterface
{
    public string Get(string str = null)
    {
        return str;
    }
}

现在我会认为Get中的方法MyClass继承了接口的两个方法,但是......

“MyClass”未实现接口成员“MyInterface.Get()”

这有充分的理由吗?

也许我应该通过将可选参数放入您所说的界面中来解决此问题?但这又如何呢?

附件B

interface IMyInterface
{
    string Get(string str= "Default");
}

class MyClass : IMyInterface
{
    public string Get(string str = "A different string!")
    {
        return str;
    }
}

这段代码编译得很好。但这不一定是正确的吗?然后通过更多的挖掘,我发现了这一点:

  IMyInterface obj = new MyClass();
  Console.WriteLine(obj.Get()); // writes "Default"

  MyClass cls = new MyClass();
  Console.WriteLine(cls.Get()); // writes "A different string!"

调用代码似乎是根据声明的对象类型获取可选参数的值,然后将其传递给方法。对我来说,这似乎有点愚蠢。也许可选参数和方法重载都有各自的使用场景?

我的问题

我的调用代码正在传递一个实例IMyInterface并且需要在不同的点调用这两个方法。

我是否会被迫在每个实现中实现相同的方法重载?

public string Get()
{
  return Get("Default");
}

我也没有意识到的是可选参数不要更改方法签名。所以下面的代码是完全合法的,实际上是我的解决方案:

interface IMyInterface
{
    string Get(string str = "Default");
}

class MyClass : IMyInterface
{
    public string Get(string str)
    {
        return str;
    }
}

所以如果我有一个实例MyClass,我必须打电话Get(string str),但如果该实例已被声明为基接口IMyInterface,我仍然可以打电话Get(),它的默认值来自IMyInterface首先,然后调用该方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可选参数和继承 的相关文章

随机推荐

  • 查找数组中相同数字的最长出现次数

    使用 JavaScript 我试图找到一种方法来查找数组中相同数字 在本例中为 1 的最长出现次数 例如 这是一个示例数组 2 5 3 1 1 1 3 7 9 6 4 1 1 1 1 1 4 7 2 3 1 1 4 3 我想编写一个返回 5
  • 分配并创建新的字符串差异

    String s1 new String string String s2 new String string String s3 string String s4 string System out println s1 s2 FALSE
  • 有没有适用于 iOS 的 unrar 库?

    我想在我的 iPhone 应用程序中包含 unrar 文件选项 我已经尝试过了https github com ararog Unrar4iOS但这个库并不完整 有些功能尚未实现 例如 BOOL unrarFileTo NSString p
  • 反向代理背后的 HTTP/2

    到目前为止 所有教程都告诉我 我需要在服务器上启用 SSL 才能支持 HTTP 2 在给定的场景中 我们在后端 Tomcat Jetty 服务器前面有 nginx 尽管从性能角度考虑值得在后端启用 HTTP 2 但在那里也拥有 HTTPS
  • HTTP GET 和 POST 参数建议

    发出以下 POST 请求是否是不好的做法 test a 1 b 2 POST data c 3 d 4 请注意 2 个参数是 URL 的一部分 2 个参数是 POST 内容的一部分 另一方面 仍然建议遵循以下规则 GET 请求 从中检索内容
  • Tensorflow:对小批量中的每个样本使用不同过滤器进行卷积

    我想要一个带有过滤器的二维卷积 该过滤器取决于张量流中小批量中的样本 有什么想法可以做到这一点 特别是在每个小批量的样本数量未知的情况下 具体来说 我有输入数据inp形式的MB x H x W x Channels 我有过滤器F形式的MB
  • 是否可以从 C# 中调用用户定义(自定义)R 函数?

    是否可以从 C 中调用用户定义 自定义 R 函数 例如 用 R 编写的简单矩阵乘法函数 matrix mult function a b c a b return c 我怎样才能从c 调用这个R函数matrix mult a b 经过一番研
  • 将浮雕添加到navigationItem.titleView中的UILabel(如navigationItem.title所示)

    我试图模仿自动应用于 navigationItem title 以及许多其他 UIKit 控件的默认浮雕 如该屏幕截图的标题 表格单元格 所示 source quicksnapper com 我本质上是想向 navigationItem t
  • HttpContext 和 SignalR HubCallerContext 之间的统一静态类

    我有很多依赖于 HttpContext Current 的代码 我注意到来自 SignalR 集线器的请求HttpContext Current null 所以我的代码中断了 例如 HttpContext Current Request I
  • 为远程托管的 SQL Server 定义连接字符串

    目前我有以下内容
  • C# 将一个目录与另一个目录合并

    我有一个自动更新程序 C 程序 它将下载一个 rar 文件 其中包含用于更新某些软件的更改或新文件 rar 文件的结构与软件的基本目录类似 但仅包含已更改或新的文件 文件夹 有没有一种简单的方法可以将这些文件 文件夹 合并 到目标目录 这样
  • CruiseControl.NET 电子邮件发布者问题

    我想将 ccnet 设置为 每次构建后向提交者发送邮件 无论状态如何 当构建中断或修复时 向所有其他开发人员发送邮件 随着 CCNet 的每个新版本 电子邮件发布者都会被重构 并且据说有所改进 但我仍然遇到同样的问题 只有提交者会收到通知
  • 投影 topojson 的方法?

    给定一个形状文件 自然地球 ne 10m admin 0 sovereignty zip 鉴于我们想要将其重新投影为 D3js 数据可视化 我们可以在不同级别重新投影 1 获取重新投影的形状文件 1 使用ogr2ogr ogr2ogr f
  • dockerize 一个 wpf 应用程序并使用它

    我正在尝试对 wpf 应用程序进行 dockerize 当时只是一个简单的应用程序 现在我得到了这个 dockerfile FROM microsoft nanoserver WORKDIR C run PATH ENTRYPOINT C
  • 如何在WinForms中制作ownerdraw Trackbar

    我正在尝试制作一个带有滑块拇指自定义图形的轨迹栏 我从以下代码开始 namespace testapp partial class MyTrackBar System Windows Forms TrackBar public MyTrac
  • PHP 确定多个(n)日期时间范围何时相互重叠

    我正在努力解决以下问题 这是一个日历程序 给定多个人的一组可用日期时间集 我需要找出每个人在 PHP 中可用的日期时间范围 可用性集 p1 start 2016 04 30 12 00 end 2016 05 01 03 00 p2 sta
  • 如何检测用户的区域设置以获得正确的 csv 分隔符?

    我有一个简单的数据转换工具 它可以生成的输出之一是 csv 文件 这在英国非常有效 但当我将其运送给德国客户时 我遇到了一些问题 具体来说 他们使用 表示浮点数中的小数点 反之亦然 这意味着当他们在 Excel 中打开数据文件时 结果至少可
  • 如何使用四开同时编织两种格式?

    是否可以通过在 YAML 标头中指定来一次从 Quarto R Markdown 文档创建多种输出格式 我的猜测没有成功 title Stacked Area chart with Annotations format html gfm 尝
  • jqGrid - rowObject 不一致?

    带有 jqgrid rowObject 的第一页结果返回预期数据 但随后返回后续结果页的不完整数据 为什么 结果第一页 rowObject 3 将等于 2 结果的后续页面 rowObject 3 将等于 未定义 并且返回结果的第一页现在也将
  • 可选参数和继承

    我了解可选参数 并且非常喜欢它们 但我想更多地了解如何将它们与继承的接口一起使用 附件A interface IMyInterface string Get string Get string str class MyClass IMyIn