通常說泛型,比如List<T>是類型安全的,為什麼這麼說呢?
先來看一個類型不安全的例子。
class Program
{
static void Main(string[] args)
{
var hoverTreeArr = new ArrayList();
hoverTreeArr.Add(1);
hoverTreeArr.Add("2");
foreach (var item in hoverTreeArr)
{
int tempInt = (int) item;
Console.WriteLine(tempInt);
}
Console.ReadKey();
}
}
可以往ArrrayList實例中添加任何類型。但在遍歷集合轉換的時候,會拋出一個轉換異常。
如果使用List<T>泛型呢?
class Program
{
static void Main(string[] args)
{
List<int> hoverTreeArr= new List<int>();
hoverTreeArr.Add(1);
hoverTreeArr.Add(2);
foreach (var item in hoverTreeArr)
{
int tempInt = (int) item;
Console.WriteLine(tempInt);
}
Console.ReadKey();
}
}
用List<int>後,關於類型安全,有2個體會:
1、如果使用hoverTreeArr.Add("3"),這在編譯期就不通過
2、在進行類型轉換的時候不會拋出異常