在C#中将结构值传递给方法by-reference是可接受的优化吗?

我有一个结构:

struct MyStruct
{
    public int X
    public int Y
}

并且在某些类中的方法在其他地方多次迭代:

public bool MyMethod( MyStruct myStruct )
{
    return ...
}

是否将MyMethod签名更改为以下可接受的优化?

public bool MyMethod( ref MyStruct myStruct )

如果是这样,它真的有多大的优势?如果没有,那么结构需要多少字段才能以这种方式使用ref获得足够大的优势?

解决方法

既然你明确询问它是否“可以接受”……

我回答不.通过ref传递参数,你对编译器和程序员撒谎; .NET中的ref(独占)意味着您打算修改方法内的参数.

当然,你可以提供一个额外的注释来解释程序员的“谎言”(但不是编译器……).但为什么首先滥用语义?

如果你真的需要这样的极端微优化(并且看到其他答案 – 任何性能优势都会因为各种原因而受到质疑!).NET可能只是错误的环境.在C中实现相关部分.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...