在C#中将结构值传递给方法by-reference是可接受的优化吗?
发布时间:2020-12-16 00:13:46 所属栏目:百科 来源:网络整理
导读:说我有一个结构: struct MyStruct{ public int X public int Y} 并且在某些类中的方法在其他地方多次迭代: public bool MyMethod( MyStruct myStruct ){ return ...} 是否将MyMethod签名更改为以下可接受的优化? public bool MyMethod( ref MyStruct mySt
说我有一个结构:
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中实现相关部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |