使用值和引用参数类型重载的方法

2024-01-09

我有以下代码:

class Calculator
    {
        public int Sum(int x, int y)
        {
            return x + y;
        }



        public int Sum(out int x, out int y)
        {
            x = y = 10;
            return x + y;
        }


    }

    class Program
    {
        static void Main(string[] args)
        {
            int x = 10, y = 20;
            Calculator calculator = new Calculator();

            Console.WriteLine ( calculator.Sum ( x , y ) );
            Console.WriteLine ( calculator.Sum ( out x , out y ) );

        }
    }

尽管方法签名仅在以下情况下有所区别,但该代码运行良好out关键词。

但以下代码不起作用:

class Calculator
    {

        public int Sum(ref int x, ref int y)
        {
            return x + y;
        }

        public int Sum(out int x, out int y)
        {
            x = y = 10;
            return x + y;
        }

    }


    class Program
    {
        static void Main(string[] args)
        {
            int x = 10, y = 20;
            Calculator calculator = new Calculator();

            Console.WriteLine ( calculator.Sum ( ref x , ref y ) );
            Console.WriteLine ( calculator.Sum ( out x , out y ) );

        }
    }

为什么这段代码不起作用? 像 ref 和 out 这样的关键字是方法签名的一部分吗?


out 参数修饰符(C# 参考) http://msdn.microsoft.com/en-us/library/ee332485.aspx

尽管 ref 和 out 关键字会导致不同的运行时行为,它们在编译时不被视为方法签名的一部分。因此,如果唯一的区别是方法不能重载 一个方法采用 ref 参数,另一种方法采用 out 争论。

另请参阅:ref(C# 参考 http://msdn.microsoft.com/en-us/library/vstudio/14akc2c7%28v=vs.120%29.aspx)

班级成员不能有仅 ref 和 不同的签名 出去。如果两者之间唯一的区别,则会发生编译器错误 类型的成员之一是其中一个具有 ref 参数,并且 other 有一个 out 参数。

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

使用值和引用参数类型重载的方法 的相关文章

  • C# 静态类型不能用作参数

    public static void SendEmail String from String To String Subject String HTML String AttachmentPath null String Attachme
  • 如何从字符串中提取子字符串直到遇到第二个空格?

    我有一个像这样的字符串 o1 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 1232 5467 如何仅提取 o1 1232 5467 要提取的字符数并不总是相同 因此 我只想提取直到遇到
  • 与 for_each 或 std::transform 一起使用时,如何调用 C++ 函子构造函数

    我以前从未使用过 C 函子 所以我只是想了解它们是如何工作的 例如假设我们有这个函子类 class MultiplyBy private int factor public MultiplyBy int x factor x int ope
  • C# SmtpClient编程中如何设置带有中文的附件文件名?

    我的代码如下 ContentType ct new ContentType ct MediaType MediaTypeNames Application Octet ct Name 这是一个很长的中文文件名希望能用它在附件名中 Doc A
  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • 混合模型优先和代码优先

    我们使用模型优先方法创建了一个 Web 应用程序 一名新开发人员进入该项目 并使用代码优先方法 使用数据库文件 创建了一个新的自定义模型 这 这是代码第一个数据库上下文 namespace WVITDB DAL public class D
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • 用于在标头更改时重新编译的简单 C 项目的示例 makefile

    有谁有完整的 makefile 可以执行以下操作 如果 HEADER 文件发生更改 则重建项目 cpp 文件在 makefile 中列出 头文件未在 makefile 中列出 头文件允许与 cpp 文件具有不同的名称 部分cpp文件没有头文
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • 如何在 Javascript 中连接 C# ActiveX 事件处理程序

    我尝试使用几个代码片段将 ActiveX 对象与 Javascript 事件处理程序挂钩 我无法确定为什么事件处理程序没有被调用 带有项目的 Github 存储库 https github com JesseKPhillips Csharp
  • 如何防止 Blazor NavLink 组件的默认导航

    从 Blazor 3 1 Preview 2 开始 应该可以防止默认导航行为 https devblogs microsoft com aspnet asp net core updates in net core 3 1 preview
  • Unity c# 四元数:将 y 轴与 z 轴交换

    我需要旋转一个对象以相对于现实世界进行精确旋转 因此调用Input gyro attitude返回表示设备位置的四元数 另一方面 这迫使我根据这个四元数作为默认旋转来计算每个旋转 将某些对象设置为朝上的简单方法如下 Vector3 up I
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • ContentDialog Windows 10 Mobile XAML - 全屏 - 填充

    我在项目中放置了一个 ContentDialog 用于 Windows 10 上的登录弹出窗口 当我在移动设备上运行此项目时 ContentDialog 未全屏显示 并且该元素周围有最小的填充 在键盘上可见 例如在焦点元素文本框上 键盘和内
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有

随机推荐

  • 从 Android 应用程序登录网页

    我正在努力做到这一点 我真的需要有经验的朋友的帮助 带有 2 个文本框的应用程序 一份用于用户名 一份用于密码 登录按钮 当用户按下按钮时 登录信息将发送到网页 m bonbon hr 并在浏览器中打开该网页 首次登录后 登录信息将被保存
  • 找不到接口 java.util.List Rest API Spring boot 的主要或默认构造函数

    我将请求正文传递给邮递员上的 POST 请求 类似于以下内容 name Mars artifacts elements name carbon amount 0 5 measurement g typeName typeA elements
  • 使用 ShouldBeEquivalentTo 并处理不同的名称

    我想做一个映射器测试 将数据库模型映射到 dto 数据库模型中有 class Order long Id 但在 Dto 上 同一个字段被命名为 class OrderDto long OrderId 使用 ShouldBeEquivalen
  • PayPal 和 Parse 冲突

    尝试使用 PayPal iOS SDK 使其能够仅与 Paypal 集成一起工作 但是当我尝试添加任何解析所需的框架 例如 Parse framework Boltz framework 和 ParseFacebookUtils frame
  • 使用宏将 import 语句粘贴到 thunk 前面

    触发于这个问题 https stackoverflow com questions 18535356 multiple late initialisation 我想知道是否可以编写一个 def macro 来实现结果 import scal
  • 对于 OpenXML Excel 文档,MemoryStream 为空

    我通常会使用 ClosedXML 生成 Excel 文件 核心项目迫使我只使用 OpenXML 将下载生成的 Excel 文件 我遇到一个问题 即提供给 SpreadsheetDocument 的内存流为空 我尝试了多种方法来生成流 下面的
  • node.js:在成功验证 get 请求后提供文件(特别是 apk)

    好吧 我正在尝试在成功验证 get 请求后使用 node js 提供 apk 文件 为此 我使用以下形式的 api 调用 GET apk username user token a token goes here 请注意 实际的身份验证是通
  • 使用 Laravel 下订单后减少数据库中的产品数量

    我在网站上有购物车 到目前为止一切正常 现在 我正在尝试为管理员可以在后端添加的每种产品进行数量 已经完成 以及当客户订购产品以减少数据库中的数量时 到目前为止 管理面板已准备就绪 可以向保存在数据库中的产品添加数量 这是我的购物车提交控制
  • 在 Ubuntu 10.04 上编译时未声明 PATH_MAX

    我正在尝试在 Ubuntu 10 04 中为 8 04 编译 C 程序 它失败了 因为我们已经使用了PATH MAX以及其他应该定义的常量limits h 根据各种资源 它应该是 POSIX 兼容 C 库的一部分 这是 Ubuntu 10
  • 单元测试双向 EF 关系

    我正在做一个小型实践项目来提高我的单元测试技能 我正在使用实体框架代码优先 我正在使用 FakeDBSet 它非常适合简单的实体列表 当实体树返回时 事情就不太好了 特别是 不会维护两种方式的关系 因为这是实体框架魔法的一部分 我有两节课
  • 安装后如何添加更多Qt版本?

    我已经安装了开源 Qt 5 5 0 设置如下 Kits Desktop Qt 5 4 2 MSVC2013 64bit2 Desktop Qt 5 5 0 MSVC2013 64bit Qt 版本 Qt 5 4 2 MSVC2013 64b
  • Rails - image.png 未预编译

    我正在尝试在 Amazon 的 EC2 服务器上部署 Web 应用程序 并且我将代码放在服务器上 一切看起来都正常 但是当我进入主页时 我收到一条 500 错误消息 并且production log文件给我以下错误 ActionView T
  • iPhone(SDK 2.2):在不主动使用 AVFoundation 播放音乐时调整播放音量?

    所以我有一个可以播放许多简短声音剪辑的应用程序 我需要知道声音何时播放完毕 并且我需要使用 mp3 因此我使用 AVFoundation 进行声音播放 当正在播放声音并且用户使用硬件音量按钮时 播放音量会发生变化 问题是 该应用程序不会不断
  • 在 Windows 8 应用程序中以编程方式使用 SSL 证书

    我需要这方面的帮助 我们的后端由自签名证书保护 我们称之为 OurMegaCool Certificate cer 因此 我们已使用以下命令将此证书导入到我们的开发人员机器中证书管理器MSC 现在我们可以使用以下代码从后端检索数据 asyn
  • 截取 BlackBerry 中当前屏幕的屏幕截图

    是否可以在 BlackBerry 应用程序中截取当前屏幕的屏幕截图 我的屏幕上有一个按钮 当我单击该按钮时 我想发送一封包含当前屏幕截图的电子邮件 您可以使用以下方法获取显示屏幕的屏幕截图 public static Bitmap getS
  • mvc 3会话和authorizeAttribute

    我的网站对所有人开放 但我有一个控制器 其中有某种方法 只有具有用户名和密码的管理员才能输入 我正在拯救布尔IsManager in a session 我想使用授权属性来阻止任何人IsManager false 首先定义一个ActionF
  • 以编程方式导航时,Angular Router 旧组件保留在 dom 中

    角度版本 4 从登录后LoginComponent 位于public signin路线 我想导航到TestComponent在路径中public test 我这样做如下 this router navigate public test 然后
  • CSS - 三个可滚动等高主要内容列(流体高度)和粘性/始终可见的页脚

    我几乎浏览了这里和 Google 上的所有帖子 似乎找不到关于 3 个等高列 带有 真正 粘性页脚 的 CSS 布局问题的答案 布局要求如下 顶部标题部分 其中一行用于下拉菜单选项 另一行用于工具栏按钮 主要内容部分 有 3 个等高的列 中
  • Javascript 相当于 Python 的 locals() 吗?

    在Python中 我们可以使用内置函数获取当前范围内所有局部和全局变量的字典locals and globals 在 Javascript 中是否有一些等效的方法可以做到这一点 例如 我想做如下的事情 var foo function al
  • 使用值和引用参数类型重载的方法

    我有以下代码 class Calculator public int Sum int x int y return x y public int Sum out int x out int y x y 10 return x y class