Các khai báo Generic

Một phần của tài liệu Bài 8 Collection và Generics Nền tảng lập trình C Trung tâm tin học Đại học KHTN (Trang 55 - 62)

Khái nim

− Generic là 1 phGeneric là 1 phầần trong hn trong hệệ ththốống king kiểểu cu củủa NETa .NET

Framework cho phép định kiểu mà không quan tâm nhiều đến các chi tiết bên trong.

ấ ề

− .NET Framework cung cấp nhiều generic class trong namespace System.Collections.Generic

HoHoạạtt độđộng nhng nhưư nhnhữững lng lớớp khácp khác

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Generic

Các khai báo Generic

− Tạo kiểu Generic Kiểu T và U sẽ được xác định khi sử dụng Tạo kiểu Generic class Obj{ public Object t; class Gen<T,U>{ public T t; public Object t; public Object u;

public Obj(Object _t,Object _u){

public T t; public U u;

public Gen(T _t,U _u){ t=_t; u=_u; } t=_t; u=_u; } Kiểu thông thường Kiểu generic } } } } thường

Các khai báo Generic

− SSửử ddụụng king kiểểu Genericu Generic

Chỉ định kiểu của kiểu generic sử dụng

Obj oa=new Obj(“Hello”,”World!”);j j( , ); Obj oa=new Obj(10.125,1000); Console.WriteLine((string)oa.t+ (string)oa.u); Gen<string,string> ga=new j j( , ); Console.WriteLine((double)oa.t+ (int)oa.u); Gen<double,double> ga=new Gen string,string ga new

Gen<string,string>

(“Hello”,”world!”);

Console.WriteLine(ga.t+ga.u);

Gen double,double ga new

Gen<double,int> (10.125,1000);

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Generic

Các khai báo Generic

G <i t i t>

Gen<int,int> gc=new

Gen<int,int>(10.125,1000); Console.WriteLine(ga.t+ga.u);

Compile ERROR (adsbygoogle = window.adsbygoogle || []).push({});

Obj oa=new Obj(10.125,1000);

Console.WriteLine((int)oa.t+ Runtime ERROR

Các khai báo Generic

− Generic cGeneric cũũng có ging có giớới hi hạạn khi ta xây dn khi ta xây dựựng lng lớớp hp hỗỗ trtrợợ ttấấtt cả các kiểu dữ liệu

Giới hạn tương tự lớp Object

Giải há kh i bá á à b ộ i đị h á kiể

− Giải pháp: khai báo các ràng buộc, qui định các kiểu có thể dùng với generic.

− Các ràng bug ộộc mà generic hg ỗ trợợ

Interface

Base class

Constructor

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Generic

Các khai báo Generic

Các khai báo Generic

class CompGen<T> where T : IComparable{ public T t1; CompGen<int> a = new CompGen<int>(10, 20); public T t2; public CompGen(T _t1,T _t2){ t1=_t1;t2=_t2; Console.WriteLine(a.Max()); } public T Max(){ if (t2.CompareTo(t1)<0)(t Co pa e o(t ) 0) return t1; return t2; } Compile error : kiểu generic T không định nghĩa phương thức CompareTo } } CompareTo

Khái nim

Một phần của tài liệu Bài 8 Collection và Generics Nền tảng lập trình C Trung tâm tin học Đại học KHTN (Trang 55 - 62)