Console.WriteLine("-------------------------"); //Khai báo mảng số nguyên. MyGenericArray intArray = new MyGenericArray ( 5 ); //Thiết lập giá trị. for ( int c = 0 ; c < 5 ; c ++) { intArray . setItem ( c , c * 5 ); } //Trích xuất giá trị. for ( int c = 0 ; c < 5 ; c ++) { Console . Write ( intArray . getItem ( c ) + " " ); } Console . WriteLine (); //Khai báo mảng ký tự. MyGenericArray charArray = new MyGenericArray ( 5 ); //Thiết lập giá trị. for ( int c = 0 ; c < 5 ; c ++) { charArray . setItem ( c , ( char )( c + 97 )); } //Trích xuất giá trị và in ra màn hình. for ( int c = 0 ; c < 5 ; c ++) { Console . Write ( charArray . getItem ( c ) + " " ); } Console . WriteLine (); Console . ReadKey (); } } }
Use the Console.ReadKey command (); to see the results more clearly.
Compile and run the C # program you will get the following result:
Example of Generic in C #
-------------------------
0 5 10 15 20
abcde
Generic is a technique that makes your C # program richer in the following ways:
In the previous example, we used a generic class, similarly, we could declare a generic method with a type parameter. The following example illustrates this:
using System ; using System . Collections ; namespace QTMCsharp { class TestCsharp { static void Swap < T >( ref T lhs , ref T rhs ) { T temp ; temp = lhs ; lhs = rhs ; rhs = temp ; } static void Main ( string [] args ) { Console . WriteLine ( "Ví dụ 2 về Generic trong C#" ); Console . WriteLine ( "--------Ví dụ hoán đổi giá trị--------" ); int a , b ; char c , d ; a = 10 ; b = 20 ; c = 'I' ; d = 'V' ; // Hiển thị các giá trị trước khi hoán đổi. Console . WriteLine ( "Các giá trị số trước khi gọi hàm swap: " ); Console . WriteLine ( "a = {0}, b = {1}" , a , b ); Console . WriteLine ( "Các giá trị chữ trước khi gọi hàm swap:" ); Console . WriteLine ( "c = {0}, d = {1}" , c , d ); // Gọi hàm swap để hoán đổi giá trị. Swap ( ref a , ref b ); Swap ( ref c , ref d ); // Hiển thị các giá trị sau khi hoán đổi: Console . WriteLine ( "Các giá trị số trước khi gọi hàm swap:" ); Console . WriteLine ( "a = {0}, b = {1}" , a , b ); Console . WriteLine ( "Các giá trị chữ trước khi gọi hàm swap:" ); Console . WriteLine ( "c = {0}, d = {1}" , c , d ); Console . ReadKey (); } } }
Compiling and running the above C # program will produce the following results:
Example 2 of Generic in C #
-------- Value exchange example --------
The numeric values before calling the swap function:
a = 10, b = 20
Text values before calling the swap function:
c = I, d = V
The numeric values before calling the swap function:
a = 20, b = 10
Text values before calling the swap function:
c = V, d = I
In C #, you can define a Generic Delegate with type parameters. For example:
delegate T NumberChanger < T >( T n );
The following example illustrates how to use the generic delegate in C #:
using System ; using System . Collections ; delegate T NumberChanger < T >( T n ); namespace QTMCsharp { class TestCsharp { static int num = 10 ; public static int AddNum ( int p ) { num += p ; return num ; } public static int MultNum ( int q ) { num *= q ; return num ; } public static int getNum () { return num ; } static void Main ( string [] args ) { Console . WriteLine ( "Generic Delegate trong C#" ); Console . WriteLine ( "---------------------------" ); //Tạo các đối tượng delegate NumberChanger nc1 = new NumberChanger ( AddNum ); NumberChanger nc2 = new NumberChanger ( MultNum ); //Gọi hai phương thức sử dụng các đối tượng delegate nc1 ( 25 ); Console . WriteLine ( "1 - Giá trị của num là: {0}" , getNum ()); nc2 ( 5 ); Console . WriteLine ( "2 - Giá trị của num là: {0}" , getNum ()); Console . ReadKey (); } } }
When running the above program, you will get the following result:
Generic Delegate in C #
---------------------------
1 - The value of num is: 35
2 - The value of num is: 175
According to Tutorialspoint
Previous article: Collection in C #
Next article: Anonymous method in C #