1

简单的语法 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>();

但是我可以让它更短,因为它们都被初始化为一个空列表吗?

谢谢你们!

4

5 回答 5

14

var如果这些变量不是类字段,我可以推荐使用关键字,因为类型是从使用中知道的。平面声明三个变量真的没有意义。

var Columns = new List<string>();
var Parameters = new List<string>();
var Values = new List<string>();

是的,你可以做一些事情,比如在一行中声明多个局部变量,然后在一行中初始化它们。但是请避免在一行中声明多个变量——这会使代码更具可读性。

于 2013-01-16T16:18:22.060 回答
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();
于 2013-01-16T16:24:29.380 回答
2

这不是一个很好的做法,但如果您在单个 .cs 文件中初始化字符串列表很多,您可以使用该文件的其他using语句为该类添加一个别名:

using StringList = List<string>;

然后声明和初始化它们的代码是:

StringList Columns = new StringList(), 
           Parameters = new StringList(), 
           Values = new StringList();
于 2013-01-16T16:24:04.127 回答
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>();
于 2013-01-16T16:25:19.483 回答
-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>();
于 2020-11-30T20:44:38.807 回答