当前位置:  开发笔记 > 编程语言 > 正文

在C#中创建单项列表的快捷方式

如何解决《在C#中创建单项列表的快捷方式》经验,为你挑选了7个好方法。

在C#中,是否有内联快捷方式来实例化只包含一个项目的List .

我现在正在做:

new List( new string[] { "title" } ))

在任何地方使用此代码会降低可读性 我曾想过使用这样的实用方法:

public static List SingleItemList( T value )
{
    return (new List( new T[] { value } ));
}

所以我能做到:

SingleItemList("title");

有更短/更清洁的方式吗?

谢谢.



1> M4N..:

只需使用:

List list = new List() { "single value" };

你甚至可以省略()大括号:

List list = new List { "single value" };

更新:当然这也适用于多个条目:

List list = new List { "value1", "value2", ... };


在第一个选项的括号中放置1个字面值,以便分配恰好一个空格的存储而不是默认值10
默认最终为4,我相信:new List {"Hello"} .Capacity == 4

2> Joel Coehoor..:
var list = new List(1) { "hello" };

与其他人发布的内容非常相似,只是它确保最初只为单个项目分配空间.

当然,如果你知道你以后会添加一堆东西,那可能不是一个好主意,但仍然值得一提.



3> Jon Skeet..:

迈克尔使用扩展方法的想法导致更简单的事情:

public static List InList(this T item)
{
    return new List { item };
}

所以你可以这样做:

List foo = "Hello".InList();

我不确定我是否喜欢它,请注意......


它有一些内部域特定的语言用法,特别是对于值类型.举个例子:clock.AlertUser.In(1.Minute)读取比clock.AlertUser(TimeSpan.FromMinutes(1))好多了;
@Martin:这是*every*类型的奇怪扩展.这通常是气馁的,但这是一个有趣的一般想法.

4> Jon Skeet..:

基于对Google Java Collections的曝光,对我之前的答案有不同的答案:

public static class Lists
{
    public static List Of(T item)
    {
        return new List { item };
    }
}

然后:

List x = Lists.Of("Hello");

我建议查看GJC - 它有很多有趣的内容.(我个人忽略了"alpha"标签 - 它只是开源版本的"alpha",它基于一个非常稳定且使用频繁的内部API .)



5> Michael Mead..:

使用带方法链接的扩展方法.

public static List WithItems(this List list, params T[] items)
{
    list.AddRange(items);
    return list;
}

这可以让你这样做:

List strings = new List().WithItems("Yes");

要么

List strings = new List().WithItems("Yes", "No", "Maybe So");

更新

您现在可以使用列表初始值设定项:

var strings = new List { "This", "That", "The Other" };

请参阅http://msdn.microsoft.com/en-us/library/bb384062(v=vs.90).aspx



6> Waldemar Gał..:
new[] { "item" }.ToList();

它短于

new List { "item" };

而且您不必指定类型.



7> Grzegorz Sła..:

在C#/。Net上找到的另一种方法是:

Enumerable.Repeat("value",1).ToList()

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有