2010-06-29 25 views
2

是否需要初始化一個StringBuilder變量來讓string.empty說,如果你最終沒有追加任何東西並需要返回一些東西?使用前設置StringBuilder?

public static string ToSemiColonList<T>(this IEnumerable<T> list, Func<T, string> func) 
    { 
     StringBuilder sb = new StringBuilder(); 

     foreach (T item in list) 
     { 
      if (sb.Length > 0) 
       sb.Append(";"); 

      string elem = func(item); 
      sb.Append(elem); 
     } 

     return sb.ToString(); 
    } 

在這種情況下,它可能永遠不會進入foreach。所以我的猜測是,因爲方法範圍中的每個局部變量在C#中被設置爲無值,所以將其設置爲空字符串,因爲如果這個foreach沒有被擊中,我們需要返回一些東西。

也許最好是檢查一下stringbuilder的長度,然後如果是零,返回string.empty或者我會過度(做兩次相同的工作)並且像我擁有它一樣好嗎?

+4

沒有冒犯,但你的代碼就在那裏......只是測試它比寫這個問題要快。 – 2010-06-29 04:13:09

回答

15

StringBuilder對象的默認初始化設置爲string.Empty

默認容量爲16 - 有關SO的相似(但不同)問題,請參閱here

+0

這意味着代碼很好用。 – 2010-06-29 04:10:21

+0

我想我應該使用反射器?你是如何看到StringBuilder返回的默認值的?真的對於任何.NET本地類型? – PositiveGuy 2010-06-29 04:22:38

+0

您是如何看到返回類型的? – PositiveGuy 2010-06-29 04:29:46

相關問題