gpt4 book ai didi

c# - 不能在 C# 中使用 "inline"数组?

转载 作者:IT王子 更新时间:2023-10-29 03:38:19 25 4
gpt4 key购买 nike

想象一下你在某个地方有这个

public static T AnyOne<T>(this T[] ra) where T:class
{
int k = ra.Length;
int r = Random.Range(0,k);
return ra[r];
}

甚至只是这个

public static string OneOf(this string[] strings)
{
return "a";
}

那么,你当然可以这样做......

string[] st = {"a","b","c"};
string letter = st.AnyOne();

... 这太棒了。但。看起来你不能这样做:

string letter = {"a","b","c"}.AnyOne();

或者确实可能是这个

string letter = ( {"a","b","c"} ).AnyOne();

或我尝试过的任何其他方法。

事实上(1)为什么不能那样做? (2) 我是否遗漏了什么,如果有办法,你会怎么做?

最佳答案

您必须先创建数组,使用 new[] .

string letter = (new[] {"a","b","c"}).AnyOne();

正如@hvd 提到的,您可以在没有括号的情况下执行此操作 (..) ,我添加了括号,因为我认为它更具可读性。

string letter = new[] {"a","b","c"}.AnyOne();

并且可以指定数据类型new string[]与其他答案一样。


你不能只做 {"a","b","c"} ,因为您可以将其视为填充数组而不是创建数组的一种方式。

另一个原因是编译器会感到困惑,不知道要创建什么,例如 string[]{ .. }List<string>{ .. } .

仅使用 new[]编译器可以通过数据类型("..")知道,在{..}之间。 ,你想要什么( string )。重要的部分是[] ,这意味着您需要一个数组。

你甚至不能用 new[] 创建一个空数组.

string[] array = new []{ }; // Error: No best type found for implicity-typed array

关于c# - 不能在 C# 中使用 "inline"数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509177/

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