簡體   English   中英

C#使用init塊的Java匿名內部類的等價物

[英]C# Equivalent of Java anonymous inner classes with init blocks

在Java中,我喜歡使用諸如的結構

List<String> list = new ArrayList<String>() {{add("foo");}};

有沒有辦法在C#的1行中做到這一點呢?

這稱為集合初始化程序 ,它是C#3.0的一部分。

除了列表之外,您還可以初始化更復雜類型的集合,只要它們實現IEnumerable並且對集合初始值設定項中的每個元素都有適當的Add方法。 例如,您可以使用Dictionary<TKey, TValue>Add(key, value)方法,如下所示:

var dict = new Dictionary<string, int> 
{ 
    {"first", 10 }, 
    {"second", 20 }
};

更多細節可以在C#in Depth的第8章找到,可以從Manning的網站免費下載。

我想你想要的是一個數組初始化器

List<string> list = new List<string>() { "foo" };

多個項目應以逗號分隔

List<string> list = new List<string>() { "foo","bar","bas"};

您可以在.NET 3.5中設置屬性值:

List<string> list = new List<string> () { Property = Value, Property2 = Value2 };

或者初始化一個數組:

List<string> list = new List<string> () { "value1", "value2" };

但是,您不能以這種方式調用方法。

如果你只需要處理向集合添加對象,那么集合初始化器工作得很好,但是如果你需要執行更多的靜態初始化,你可以使用一些靜態構造函數,它與java中的靜態初始化程序一樣。

格式有差,但似乎掩蓋它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM