小编Sea*_* M.的帖子

C# 7.2 使用“in parameter”作为运算符

在 C# 7.2 中,我们看到了in方法参数修饰符的引入,以将只读引用传递给对象。我正在使用 7.2 开发一个新的 .NET Standard 项目,出于好奇,我尝试in在结构的相等运算符的参数上使用关键字进行编译。

IE - public static bool operator == (in Point l, in Point r)

不是 - public static bool operator == (Point l, Point r)

我最初对这行得通感到有点惊讶,但经过仔细思考后,我意识到这两个版本的运算符之间可能没有功能差异。我想确认这些怀疑,但经过一番彻底的搜索后,我找不到任何明确谈论in在运算符重载中使用关键字的内容。

所以我的问题是这是否真的有功能差异,如果有,是否有任何特别的理由鼓励或阻止使用inwith 运算符参数。我最初的想法是没有区别,特别是如果操作符是内联的。但是,如果确实有所作为,似乎 in 参数应该在任何地方使用(只读引用有意义的任何地方,即),因为它们提供了速度奖励,并且与refand不同out,不需要用户预先添加传递对象时的那些关键字。这将允许更有效的值类型对象传递,而无需对方法和运算符的用户进行任何更改。

总的来说,这可能超出了大多数 C# 开发人员担心的那种小规模优化,但我很好奇它是否有效果。

c# operators c#-7.2 in-parameters

5
推荐指数
1
解决办法
202
查看次数

标签 统计

c# ×1

c#-7.2 ×1

in-parameters ×1

operators ×1