Unity3D,如何为运营商编写扩展方法?

时间:2016-05-31 23:08:00

标签: c# unity3d operator-overloading extension-methods

我正在尝试扩展这是Unity3D功能的Vector3。它没有一个小于运算符,所以我试图创建一个。但是,当我为它编写扩展方法时,我的IDE告诉我"标识符预期,'这个'是关键字"。

如何使用运算符编写扩展方法?这是我的尝试,出乎意料地无效:

using UnityEngine;
using System.Collections;

public static class Vector3Extensions
{
    public static bool operator <(this Vector3 vector3, Vector3 other)
    {
        if (vector3.x < other.x)
        {
            return true;
        }
        else if (vector3.x > other.x)
        {
            return false;
        }
        else if (vector3.y < other.y)
        {
            return true;
        }
        else if (vector3.y > other.y)
        {
            return false;
        }
        else if (vector3.z < other.z)
        {
            return true;
        }
        return false;
    }
}

2 个答案:

答案 0 :(得分:5)

您无法使用扩展方法对运算符进行重载。也许您可以添加.LessThan

答案 1 :(得分:-2)

这不是扩展方法,而是运算符重载。请参阅以下MSDN documentation

  

==,!=,&lt;,&gt;,&lt; =,&gt; =比较运算符可能会重载(但请参阅下面的注释)。   注意比较运算符如果过载,则必须成对过载;也就是说,如果==超载,!=也必须重载。反之亦然,并且类似于&lt;和&gt;,以及&lt; =和&gt; =。

完整文档here