程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#定義動態數組(泛型)

C#定義動態數組(泛型)

編輯:C#入門知識

C#定義動態數組(泛型)


C#代碼中定義動態數組的時候,是很有講究的。我們通常不知道我們需要多大空間,而且在數據之間的轉化也是一個問題。


問題一:


GUID類型無法轉換為GUID[]


解答:


我們嘗試的時候一般用的是數組:


 
Guid[] staff = new Guid[] { settingEvaluationBLL.LoadEnities(s => s.YzStaffEntityEvaluaterID.ID == EvaluationID).ToList().Select(u=>u.CriticsID).ToList().FirstOrDefault() };

我們都知道.FirstOrDefault(),返回序列中的第一個元素;如果序列中不包含任何元素,則返回默認值。因此它根本不是返回的數組。


而實際上new Guid{字符串類型},而且這個字符串類型的是可以轉換為GUID類型的。


因此我們用了.ToArray();是一個集合,集合的大小是可以變動的。


正確的寫法應該是:


           
List resultlist = settingEvaluationBLL.LoadEnities(s=>s.YzStaffEntityEvaluaterID.ID ==EvaluationID).ToList();
           
Guid[] str = resultlist.Select(u => u.CriticsID).ToArray();

問題二:如何得到任意類型的集合?


            
String[] score;
Decimal[] scorevalue;
score = scoreslist.Select(u => u.ScoreLevel).ToArray();
scorevalue = scoreslist.Select(u => u.Scores).ToArray();

我們看到了,Arraylist默認初始容量為0.隨著元素添加到ArrayList中,容量會根據需要通過重新分配自動增加。


當然Arraylist有了如此好處,一定會有弊端的。它的弊端就是類型不安全,我們用它存放至類型的數據,比如int,string型等等,用ArrayList就意味著都需要將值類型裝箱為Object對象,使用集合元素時,還需要執行拆箱操作,這就帶來了很大的性能損耗。


問題三:如何定義各種類型的泛型?


泛型:


        
IListSeriesNameSave = new List();

如何給泛型裝箱:


還舉個GUID類型的例子:


	
IList SeriesIDSave = new List();

SeriesIDSave.Add(seriesBLL.LoadEnities(u => u.SeriesName == SeriesValue[i]).Select(u => u.ID).FirstOrDefault()); 

泛型在擴容的時候,用到的是Add。


如果我們用泛型集合使用會更加方便,看同樣是得到GUID類型:


        
SeriesValue = resultlist.Select(u => u.YzStaffEntityCriticsID.YzSeriesEntityID).ToArray();

這樣是不是一句話就可以解決了。


總結:


我們看看數組、集合、泛型之間的區別:


集合可放任意類型的元素,會自動增大,取出時要做類型轉換。


泛型集合只能放定義類型的元素,會自動增大,取出時不用做類型轉換。


數組只能放定義類型的元素,不會自動增大,取出時不用做類型轉換。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved