簡體   English   中英

Unity3D,如何為運營商編寫擴展方法?

[英]Unity3D, how can I write an extension method for operators?

我試圖擴展Vector3D功能的Vector3 它沒有一個小於運算符,所以我試圖創建一個。 但是,當我為它編寫擴展方法時,我的IDE告訴我“Identifier expected,'this'是一個關鍵字”。

如何使用運算符編寫擴展方法? 這是我的嘗試,出乎意料地無效:

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;
    }
}

您不能使用擴展方法來重載運算符。 也許你可以添加.LessThan

它不是擴展方法,而是運算符重載。 請參閱此MSDN文檔 ,其中說明:

==,!=,<,>,<=,> =比較運算符可以重載(但請參見下面的注釋)。 注意比較運算符如果過載,則必須成對過載; 也就是說,如果==超載,!=也必須重載。 反之亦然,<和>以及<=和> =類似。

完整文檔在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM