我正在學習使用C#中的數組數據結構。請看看我的代碼。我嘗試在數組OrderBy()方法中擴展lambda表達式和委派,以便完全理解它是如何工作的。但即使運行結果正確,Visual Studio也會出現語法錯誤。如果有人能幫我糾正「代表團3」的一部分,我將不勝感激。謝謝。委託如何在C#中的數組OrderBy方法中工作?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test2 {
class Program {
delegate int Del(int i);
static void Main(string[] args) {
int[] MyArray = new int[5] { 3, 2, 6, 10, -3 };
// print original array
foreach (var i in MyArray) {
Console.Write(i + " ");
}
Console.WriteLine();
//Console.ReadKey();
// sort array by using either Linq or OrderBy
// Linq works
//int[] mynewarray = (from i in MyArray orderby i ascending select i).ToArray();
// delegation 1 works
//int[] mynewarray = MyArray.OrderBy(i => i).ToArray();
// delegation 2 works
//int[] mynewarray = MyArray.OrderBy(delegate (int i) { return i; }).ToArray();
// delegation 3 has syntax error
Del del = MyInt;
int[] mynewarray = MyArray.OrderBy(del(int i)).ToArray();
// print sorted array
foreach (var i in mynewarray) {
Console.Write(i + " ");
}
Console.ReadKey();
}
public static int MyInt(int i) {
return i;
}
}
}
'del(int i)'不是c#語法。您應該調用委託'OrderBy(i => del(i))'或將它作爲參數'OrderBy(del)' –
謝謝謝爾蓋。我也試過del(i)。但它仍然給語法錯誤。 –
另一種選擇是'OrderBy(MyInt)' – juharr