1. 程式人生 > >【C#】Func委託型別和匿名方法

【C#】Func委託型別和匿名方法

using System;
/// <summary>
/// Func<int> 必須有一個返回值型別,當前為無引數,返回值型別是int的方法
/// Func<string,int>  這種情況,string是方法的引數,int是方法的返回值
/// 方法的返回值在<>的最後一個,除了最後一個型別,都是方法的引數
/// 引數個數在0-16個之間,返回值型別必須是1個
/// </summary>
namespace Func委託型別和匿名方法
{
	class MainClass
	{
		//----------------------------------------------------------

		private static  string GetName ()
		{
			return "Sea";
		}
		//----------------------------------------------------------

		private static int GetInfo (string name)
		{
			Console.WriteLine ("名字是{0}", name);
			return 18;
		}
		//----------------------------------------------------------

		public static void Main (string[] args)
		{

			//-------------------------------------------------------

			// 委託一個返回值是string型別的方法
			Func<string> name = GetName;
			Console.WriteLine (name ());
			// 輸出結果:Sea

			//-------------------------------------------------------

			// <>中至少有一個型別,也可以有多個型別
			// 當只有一個型別的時候,該型別就是方法的返回值型別
			// 當有多個型別的時候,最有一個為返回值型別,前面的為方法的引數型別
			// 如下行的委託就是一個返回值是int型別,引數是string型別
			Func<string,int> info = GetInfo;
			info ("海洋");

			//-----------------------匿名方法-------------------------
			// 從上面的程式碼其實我們可以看得出來,每一個委託的定義都必須通過一個能匹配的方法來完成
			// 然而有時候,用來初始化委託用的方法並不一定就是我們想用的,也許僅僅是為了初始化委託

			// 注意委託裡的引數名會使用Main函式裡的變數名字
			Func<string,int> info2 = delegate (string name2)
			{
			return 18;
			};
			

		}
	}
}