C#中的预期代码(Java有)
List<String> myList = new List<String>() {{
add("Hello");
add("World!");
}}
// myList = [ "Hello", "World" ]
只是想知道是否有一个等价的,可能还有C#的静态构造函数?
修改
为了澄清这一点,不是明确的集合,而是任何类结构。 例如:
abstract class myClass {
String data;
List<String> list;
void setupList() {
list = new List<String>();
}
}
...
var obj = new myClass() {{
data = "Yo";
setupList();
}};
答案 0 :(得分:14)
您正在寻找集合初始化程序语法:
List<String> myList = new List<String>() {"Hello","World!"};
答案 1 :(得分:1)
这是一个对象初始值设定项,它也使用集合初始值设定项(注意集合初始值设定项中的类型推断,创建的List的类型为List):
var myClass = new MyClass{
Data = "foo",
List = new List{"item1", "item2"},
IntArray = new[]{1,2,3},
Dictionary = new Dictionary<string,string>{{"key1","value1"},{"key2","value2"}},
};
您无法在初始化程序中调用SetupList()等任意方法,而是在第一次访问或静态时初始化List属性等。 您可以使用Lazy类或自己实现它(??是空合并运算符):
class MyClass{
public string Data { get; set; }
private IList<string> _list0 = new List();
public IList<string> List0
{
get
{
return _list0;
}
}
private IList<string> _list1;
public IList<string> List1
{
get
{
return _list1 ?? (_list1 = new List());
}
}
private readonly Lazy<IList<string>> _lazyList = new Lazy<IList<string>>(() => new List<string>());
public IList<string> List2
{
get
{
return _lazyList.Value;
}
}
}
答案 2 :(得分:0)
这是您可以将项目添加到字符串列表
的方法List<string> myList = new List<string>();
myList.Add("Hello");
myList.Add("World!");
如果你想删除它们,你可以简单地执行此操作
myList.Remove("Hello");
myList.Remove("World!");