[英]Generic class and Constraint
我正在使用泛型類和約束。 以下是我的課程。
public class GenericList<T> where T : new()
{
private Node head;
// constructor
public GenericList()
{
head = null;
}
}
當我用整數創建對象時,它工作正常
GenericList<int> list = new GenericList<int>();
但是當我嘗試使用字符串時,它給了我以下編譯時錯誤。
GenericList<string> list1 = new GenericList<string>();
為了在通用類型或方法“ GenericTest.GenericList”中將其用作參數“ T”,“ string”必須是具有公共無參數構造函數的非抽象類型,當我像其他自定義類一樣傳遞引用參數時,它也可以正常工作。
字符串有什么問題?
字符串類沒有公共的無參數構造函數 ..這就是為什么new()
約束不適用於它。
其中T:new()
類型參數必須具有公共的無參數構造函數。 與其他約束一起使用時,必須最后指定new()約束。
String
類型具有公共的無參數構造函數是沒有意義的,因為String
是不可變的 ,這意味着如果String
具有此構造函數,則它將必須創建一個空的字符串對象,而這只是愚蠢的,因為在創建后您無法更改它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.