2014-09-12 150 views
2

我想在C#中爲byte []類型的操作數過載<,>,< =和> =操作符。所以我很難找到關於「二元運算符的一個參數必須是包含類型」的錯誤。無論如何,我似乎無法從字節[]繼承,我不想封裝一個字節[]在另一個類(聲音像太多的開銷)。有沒有辦法解決它?也許使用擴展方法?還是完全瘋了?byte []的重載操作符

非常感謝。

+0

沒有真正的方法來做到這一點。 – 2014-09-12 22:37:47

回答

2

沒有真正的方法來做到這一點。 - 邁赫達德Afshari

鑑於byte[] a, b

人們可以使用擴展方法來定義「羅嗦」運營商a.GreaterThan(b),這實在是寫MyByteArray.GreaterThan(a, b)的只是一小段路。

但是,它是而不是如果表達式中既不可能(可能是相同)類型不能被修改以添加這樣的話,則可能定義運算符。

儘管如此,一個簡單的包裝將不會增加很多開銷(或受益?):MyByteArray.Rich(a) > b,其中Rich返回一個類型,其運算符定義爲>

由於a仍然無法修改,因此隱式/顯式強制轉換也會失敗,因爲在源表達式上定義了[自定義]強制轉換,而不是目標表達式。