對C 泛型例項化對像 轉

2022-01-31 22:42:49 字數 823 閱讀 8853

最近在編寫一套開發框架結構主要應用.net 3.5以上的框架開發與應用。在此框架中應用了較多的泛型。下面來講講對泛型的例項化,以**為例,如:

public class a

public class b

public static t get()

//在這一塊如何例項化t這個物件呢?如果用default(t)這個是不行的。只能做乙個null值處理。

以上的方法就是遇到最麻煩的問題。一直以來都以為default(t)就可以例項化t這個對像,其實不然,這個只能起乙個null值的作用。如果要解決以上的問題現在有兩種方法:

一、在使用泛型的類後面加入乙個 where t : new(),**如下:

public class a

public class bwhere t : new()

public static t get()

t result = new t();//這樣就可以例項化。也可以編譯通過。

對於new()約束,大家可能有乙個誤解,以為使用了new約束之後,在建立物件時與非泛型的版本是一致的。事實上,使用new關鍵字的作用只是讓編譯器在泛型例項化之處,檢查所繫結的泛型引數是否具有無參建構函式,也可以例項化出來乙個物件。

二、可以使用system.activator.createinstance()建立泛型例項對像。**如下:

public class a

public class b

public static t get()

t s = system.activator.createinstance();

上面所講的兩種方式都是以用反射機制來獲取泛型物件的例項的。

對C 泛型例項化對像

最近在編寫一套開發框架結構主要應用.net 3.5以上的框架開發與應用。在此框架中應用了較多的泛型。下面來講講對泛型的例項化,以 為例,如 public class a public class b public static t get 在這一塊如何例項化t這個物件呢?如果用default t 這...

C 對泛型例項化對像的方法

最近在搞乙個小東東,用到了泛型的處理,用到了對泛型的例項化問題。下面來講講對泛型的例項化,以 為例,如 public class a public class b 以上的方法就是遇到最麻煩的問題。一直以來都以為default t 就可以例項化t這個對像,其實不然,這個只能起乙個null值的作用。如果...

c 泛型的例項化

框架中應用了較多的泛型。下面來講講對泛型的例項化,以 為例,如 public class a public class b 以上的方法就是遇到最麻煩的問題。一直以來都以為default t 就可以例項化t這個對像,其實不然,這個只能起乙個null值的作用。如果要解決以上的問題現在有兩種方法 一 在使...