首先我想說我有一些Java的背景,現在我正在學習C#。返回C#中的「功能接口」#
我有以下接口:
interface IComparer<T> {
bool Equals(T a, T b)
}
我要實現以下方法:
static IComparer<T> Compare(...) { }
如果這是Java中,我會簡單地返回lambda表達式實現自定義的方法收到兩個T
,並返回一個bool
,但這在C#中無效。
有沒有辦法解決這個問題,而無需創建一個新的類實現IComparer
?我不想使用實現「Equals」方法的C#庫中的任何東西,我知道它存在,我只是想了解如何從Java返回類似「功能接口」的東西在C#中。
謝謝。
沒有,lambda表達式無法實現在C#中的接口。 [有人建議](https://github.com/dotnet/roslyn/issues/4801)(現在[這裏](https://github.com/dotnet/roslyn/issues/11929)) – Jcl
而且如何這個例子中的代表來玩嗎? @Jcl –
而不是返回一個接口,你會返回一個直接委託(在你的例子中,一個'Func')......它絕對不一樣,因爲它適用於單一方法(這就是爲什麼你無法返回lambda表達式的接口......如果定義了幾個方法和屬性,會怎麼樣?) –
Jcl