运算符重载的奇葩写法。。。

runerback runerback 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
打算更深入地学习C#,于是心血来潮准备“照抄”一个用.Net写出的游戏任务编辑器,正在“还原”一些dll,于是就出来了像下面这样的写法,编译器不让通过,我也没见过,有经验的看看是不是很久以前的写法?

Float3类型,三个float属性XYZ,其中的两个运算符重载:

public static void operator +(ref Float3 ptr, Float3 obj1, Float3 obj2)
{
ptr = new Float3(new Float3
{
m_x = (float)((double)obj1.m_x + (double)obj2.m_x),
m_y = (float)((double)obj1.m_y + (double)obj2.m_y),
m_z = (float)((double)obj1.m_z + (double)obj2.m_z)
});
}
public static void operator -(ref Float3 ptr, Float3 obj1, Float3 obj2)
{
ptr = new Float3(new Float3
{
m_x = (float)((double)obj1.m_x - (double)obj2.m_x),
m_y = (float)((double)obj1.m_y - (double)obj2.m_y),
m_z = (float)((double)obj1.m_z - (double)obj2.m_z)
});
}

引用
错误 1 重载的二元运算符“+”采用两个参数
错误 2 ref 和 out 参数在此上下文中无效

之前刚“见识”了无法显式调用属性的get set……还好在java里见过,所以自己写get set 函数解决了。这个就不知道怎么搞了
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
runerback
C# 111,128 成员 642,536 内容