gpt4 book ai didi

c# - 列表构造的更短语法

转载 作者:行者123 更新时间:2023-11-30 20:42:10 27 4
gpt4 key购买 nike

对于 C# 6.0,给出这个静态方法:

public static List<T> List<T>(params T[] items) => new List<T>(items);

和适当的使用:

using static ListTest.ListUtils;

我可以使用 List 来构造列表:

var lsInt = List(10, 20, 30);

var lsStr = List("abc", "bcd", "cde");

如果没有 List 方法,构造可以通过以下方式完成:

var lsIntInitializer = new List<int>() { 10, 20, 30 };

名称 List 现在被用于类和方法。它似乎工作正常,但除了不被认为是惯用的之外,是否有任何技术原因为什么我不应该在这里使用 List 作为方法名称?

我也可以使用 list,但是这不是惯用的不同方式,因为方法往往是大写的。

请注意,我不介意走非惯用路线,但如果这方面有公认的做法,我想知道。

当然,带有 using static 的 C# 6.0 是一个勇敢的新世界,所以也许社区对这类事情的经验还不够。

language-ext项目使用类似的方法构造ImmutableList 对象。在这种情况下,他们使用名称 list

上面摘录的完整工作示例如下所示。

using System;
using System.Collections.Generic;

using static ListTest.ListUtils;

namespace ListTest
{
public static class ListUtils
{
public static List<T> List<T>(params T[] items) => new List<T>(items);
}
class Program
{
static void Main(string[] args)
{
var lsInt = List(10, 20, 30);

var lsStr = List("abc", "bcd", "cde");

var lsIntInitializer = new List<int>() { 10, 20, 30 };

lsInt.ForEach(Console.WriteLine);

lsStr.ForEach(Console.WriteLine);
}
}
}

最佳答案

也许一个不那么令人困惑的方法是这样的:

public static class List
{
public static List<T> Create<T>(params T[] items) => new List<T>(items);
}

你会这样调用它:

var lsInt = List.Create(10, 20, 30);

(当然不使用 using static;导入一个带有名为 Create 的方法的类会真的令人困惑)

这与不可变集合(ImmutableListImmutableArray 等)使用的方法相同

关于c# - 列表构造的更短语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593294/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com