Lambada運算式:匿名函式的表示方法。
(傳入參數) => { 執行程式 }
Action委派:無傳回值的泛型委派,至少0個參數,至多16個參數。
Action:表示無參數的委派。
Action<int>:表示傳入int參數的委派。
Action<int, string>:表示傳入int、string參數的委派。
public class Program
{
public static void Main(string[] args)
{
//委派給匿名函式
Action Combine1 = (string x, string y) => {
Console.WriteLine(x + "‧" + y);
};
Combine1("Jerry", "Haung");
//委派給具名函式
Action Combine2 = Program.CombineString;
Combine2("Mike", "Liu");
}
public static void CombineString(string x, string y)
{
Console.WriteLine(x + "‧" + y);
}
}
Func委派:有傳回值的泛型委派
Func<int>:表示無參數,回傳int的委派。
Func<int, string>:表示傳入int參數,回傳string的委派。
Func<int, int, string>:表示傳入int、int參數,回傳string的委派。
public class Program
{
public static void Main(string[] args)
{
//委派給匿名函式
Func Add1 = (int x, int y) =>
{
return (x + y).ToString();
};
Console.WriteLine(Add1(50, 50));
//委派給具名函式
Func Add2 = Program.AddInteger;
Console.WriteLine(Add2(10, 20));
}
public static string AddInteger(int x, int y)
{
return (x + y).ToString();
}
}
Predicate委派:回值布林值的泛型委派,只有1個參數。
public static void Main(string[] args)
{
//委派找出正整數
Predicate PositiveInteger = (int x) => {
return x > 0;
};
//委派找出中性數-委派給具名函式
Predicate Zero = Program.IsZero;
//委派找出負整數
Predicate NegativeInteger = (int x) => {
return x < 0;
};
//執行委派
bool isPositive = PositiveInteger(50);
Console.WriteLine(isPositive);
//執行委派參數方法
int[] array = { 1,3,5,7,0,-2,-4,-6,-8, 0 };
var PositiveList = MyFind(array, PositiveInteger);
var NegativeList = MyFind(array, NegativeInteger);
var ZeroList = MyFind(array, Zero);
Console.WriteLine(JsonConvert.SerializeObject(PositiveList));
Console.WriteLine(JsonConvert.SerializeObject(NegativeList));
Console.WriteLine(JsonConvert.SerializeObject(ZeroList));
Console.ReadKey();
}
//找出中性數
public static bool IsZero(int x)
{
return x == 0;
}
//傳入委派參數方法
public static IEnumerable MyFind(int[] array, Predicate predicate)
{
foreach (var item in array)
{
if (predicate(item))
{
yield return item;
}
}
}
delegate委派:一種委派聲明,至少0個參數,至多32個參數,可以無傳回值,也可以指定傳回值類型。
public class Program
{
//宣告delegate委派
public delegate string AddDelegate(int x, int y);
public static void Main(string[] args)
{
//委派給匿名函式
AddDelegate Add1 = (int x, int y) => {
return (x + y).ToString();
};
Console.WriteLine(Add1(30, 50));
//委派給具名函式
AddDelegate Add2 = Program.AddInteger;
Console.WriteLine(Add2(10, 20));
}
public static string AddInteger(int x, int y)
{
return (x + y).ToString();
}
}
沒有留言:
張貼留言