简单的句法c#问题是这个。
鉴于此代码:
List<string> Columns = new List<string>();
List<string> Parameters = new List<string>();
List<string> Values = new List<string>();
可以简化为:
List<string> Columns = new List<string>(), Parameters = new List<string>(), Values = new List<string>();
但我可以缩短它,因为它们都被初始化为空列表吗?
谢谢大家!
答案 0 :(得分:13)
如果这些变量不是类字段,我建议使用var
关键字,因为类型是从使用中知道的。三个变量的平坦声明真的没有意义。
var Columns = new List<string>();
var Parameters = new List<string>();
var Values = new List<string>();
是的,你可以做一些事情,比如在一行中声明多个局部变量,然后在一行中初始化它们。但是请避免在一行中声明多个变量 - 它使代码更具可读性。
答案 1 :(得分:4)
纯粹作为琐事/代码高尔夫的一点:
Func<List<string>> n = () => new List<string>();
List<string> a = n(), b = n(), c = n(), d = n(), e = n(), f = n();
但是用它代替更清晰的结构是荒谬的。如果初始化更复杂,并且代码被正确命名和间隔,可能具有值。
Func<List<string>> setupFoo = () => {
return new List<string>() { 1, 2, 3 };
};
var option1 = setupFoo();
var option2 = setupFoo();
var option3 = setupFoo();
答案 2 :(得分:2)
这不是一个很好的做法,但是如果你在单个.cs文件中大量初始化字符串列表,你可以使用文件的其他using
语句为该类添加别名:
using StringList = List<string>;
然后声明和初始化它们的代码将是:
StringList Columns = new StringList(),
Parameters = new StringList(),
Values = new StringList();
答案 3 :(得分:2)
你不能再缩短了。
你可以使用某种“空列表工厂”:
public static List<string> EmptySList()
{
return EmptyList<string>();
}
public static List<T> EmptyList<T>()
{
return new List<T>();
}
...
List<string> Columns = EmptySList(), Parameters = EmptySList(), Values = EmptySList();
老实说,您可能不想缩短代码。只需编写可读和可维护的内容:
var columns = new List<string>();
var parameters = new List<string>();
var values = new List<string>();
答案 4 :(得分:-1)
IEnumerable是集合的最基本接口。
使用它,您可以动态实例化任何类型的集合。
对于空列表,请使用。
Enumerable.Empty<TYPE>();
在您的示例中...
using using System.Collections.Generic;
...
IEnumerable<string> Columns = Enumerable.Empty<string>();
IEnumerable<string> Parameters = Enumerable.Empty<string>();
IEnumerable<string> Values = Enumerable.Empty<string>();