Tham đối kiểu tổng quát cho phép bạn định nghĩa lớp, cấu trúc, giao tiếp, tham chiếu phương thức hay phương thức sử dụng kiểu tổng quát bất kỳ, sẽ được chỉ rõ kiểu khi bạn khởi tạo lớp, cấu trúc, hay sử dụng phương thức. Lập trình kiểu tổng quát hỗ trợ tính tái sử dụng cao, tiết kiệm thời gian công sức lập trình, mà độ hoàn thiện của chương trình không giảm.
Chúng ta đã quen thuộc với lớp tổng quát List xây dựng sẵn thuộc không gian tên System.Collections.Generic. Lớp List cho phép chúng ta khai báo và khởi tạo một danh sách các phần tử có kiểu bất kỳ, bằng cách chỉ rõ một tham đối kiểu bên trong cặp dấu ngoặc nhọn < >. Tham đối kiểu có thể là bất kỳ kiểu nào của C# hay .NET. Có thể khai báo và khởi tạo nhiều danh sách khác nhau, mỗi danh sách sử dụng một tham đối kiểu khác nhau. Chẳng hạn khai báo danh sách các chuỗi như sau:
List<string> stringList = new List<string>();
List<float> floatList = new List<float>();
Theo phương pháp như vậy, bạn có thể định nghĩa các lớp, giao tiếp và cấu trúc tổng quát khác nhau:
public interface IInterface<T1, T2 … >{ }
public class CClass<T1, T2…> { }
public struct SStruct<T1, T2…> { }
Chẳng hạn bạn có thể định nghĩa một bộ đôi, bộ ba, hay mảng chứa các phần tử có kiểu bất kỳ nào đó, sẽ được chỉ rõ khi khởi tạo đối tượng
public class Couple<T, E>
{
public T itemA {get; set;}
public E itemB {get; set;}
public Couple(T itemA, E itemB)
{
this.itemA = itemA;
this.itemB = itemB;
}
}
Để tạo đối tượng gồm hai phần tử string và double, bạn khai báo như sau :
Couple<string, double> couple = new Couple<string, double>("SV01", 7.5);
C# cũng cho phép lập trình tổng quát với phương thức và tham chiếu phương thức.
Ví dụ:Phương thức hoán vị giá trị hai biến có kiểu bất kỳ
using System;
class Program
{
static void HoanVi<T>(ref T v1, ref T v2)
{
T temp = v1;
v1 = v2;
v2 = temp;
}
static void Main(string[] args)
{
string str1 = "Hello";
string str2 = "World";
Console.WriteLine("Truoc khi hoan vi: {0} {1}", str1, str2);
HoanVi<string>(ref str1, ref str2);
Console.WriteLine("Sau khi hoan vi: {0} {1}", str1, str2);
}
}
» Tin mới nhất:
» Các tin khác: