Action和Func泛型委託實際上就是一個.NET Framework預約義的委託,3.5引入的特性。基本涵蓋了全部經常使用的委託,因此通常不用用戶從新聲明。Action系列泛型委託,是沒有返回參數的委託,最多能夠有16參數,也能夠沒有參數;Func系列的委託是有返回值的委託,最多能夠有16個參數;元組是C# 4.0引入的一個新特性,編寫的時候須要基於.NET Framework 4.0或者更高版本。元組使用泛型來簡化一個類的定義.提供用於創造元組對象的靜態方法。最多能夠提供建立新的 8 元組,即八元組。html
此委託可用於將方法做爲參數傳遞而不用顯式聲明自定義委託。 封裝的方法必須對應於此委託定義方法簽名。 這意味着,封裝的方法必須具備任何參數,沒有返回值。數據結構
public delegate void Action()
//void method(); Action test1 = () => { Console.WriteLine("void method();"); }; //void method(x); Action<int> test2 = (x) => { Console.WriteLine("void method(t1)"); }; //void method(x, y); Action<int, int> test3 = (x, y) => { Console.WriteLine("void method(t1, t2)"); };
public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16>()
能夠使用此委託來表示的方法,而無需顯式聲明自定義的委託做爲參數進行傳遞。 封裝的方法必須對應於此委託定義的方法簽名。 這意味着,封裝的方法能夠具備任何參數,而且必須返回一個值。spa
public delegate TResult Func<out TResult>()
//int method(); Func<int> test4 = () => 10; //int method(x); Func<int, int> test5 = (x) => x * 2; //int method(x,x); Func<int, int, int> test6 = (x, y) => x * y;
public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, out TResult>()
元組是一種數據結構,具備特定數量和元素序列,用在方法上能夠做爲返回值,返回多個數據。code
public static Tuple<T1> Create<T1>( T1 item1 ) var tuple1 = Tuple.Create(1); Console.WriteLine(tuple1.Item1); // Displays 1 var tuple1 = new Tuple<int>(1); Console.WriteLine(tuple1.Item1); // Displays 1
Tuple.Create<T1, T2, T3, T4, T5, T6, T7, T8> 方法 (T1, T2, T3, T4, T5, T6, T7, T8) var primes = new Tuple<int, int, int, int, int, int, int, Tuple<int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int>(8));//元祖裏面能夠嵌套元祖
Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> test =
new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>(1, 2, 3, 4, 5, 6, 7, new Tuple<int, int, int>(8, 9));
//元祖準確的能夠說是當作擁有多個返回值的一種方法,不用使用ref,out了,比較方便。htm
1. C#高級功能(四)擴展方法和索引對象
2. C#高級功能(三)Action、Func,Tupleblog
3. C#高級功能(二)LINQ 和Enumerable類索引
4. C#高級功能(一)Lambda 表達式get
5. C#中泛型的解釋(object,list,var,dynamic的區別)it
6. C#中委託
7. C#和.NET版本對比