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

runerback 2015-12-23 10:00:05
打算更深入地学习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 函数解决了。这个就不知道怎么搞了
...全文
119 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
runerback 2015-12-24
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
真正去设计出来一个游戏服务(而不是虎头蛇尾),程序员的能耐还是靠其它方面的学习和交流去打下基础。
确实是想做个2D游戏来着。上班没事干的时候各种补知识,但时间还是少
  • 打赏
  • 举报
回复
反编译工具输出的东西,本来就不能直接用的。只有自己修改。 另外,如果你遇到这真正复杂一些的代码,那么编译出来、再反编译出来,代码直接就几百行几百行地面目全非了,并不像你这里只是 return 这一条代码有差别。所以反编译只能干一点“鸡鸣狗盗”的事情时派上用场,真正去设计出来一个游戏服务(而不是虎头蛇尾),程序员的能耐还是靠其它方面的学习和交流去打下基础。
  • 打赏
  • 举报
回复
反编译工具输出的东西,本来就不能直接用的。只有自己修改。

另外,如果你遇到这真正复杂一些的代码,那么编译出来、再反编译出来,代码直接就几百行几百行地面目全非了,并不像你这里只是 return 这一条代码有差别。所以反编译只能干一点“鸡鸣狗盗”的事情时派上用场,真正去设计出来一个游戏服务(而不是虎头蛇尾),程序员的能耐还是靠其它方面的学习和交流去打下基础。
runerback 2015-12-23
  • 打赏
  • 举报
回复
擦,我知道了。。return就行了

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧