gpt4 book ai didi

c# - 为什么 "my,string".Split (',' ) 在 .NET C# 中有效

转载 作者:太空狗 更新时间:2023-10-29 18:02:59 24 4
gpt4 key购买 nike

为什么 "my,string".Split(',') 在 .NET C# 中有效?

根据MSDN,Split的声明是Split(Char[])MSDN String.Split Method

我假设 C# 5 将单个字符 ',' 转换为 char[] {','};但我一定是错的,因为以下代码不起作用:

static void Main()
{
GetChar(',');
}

static char GetChar(char[] input)
{
return input[0];
}

编辑:感谢 Jon Skeet 的回答,我将参数更改为 params char[] 并且它可以证明这个概念。

static char GetChar(params char[] input)
{
return input[0];
}

最佳答案

overload you're using使用 parameter array , 基本上。这就是 params 部分的内容。编译器会自动将您的单个参数包装到一个数组中。所以这个:

var x = text.Split(',');

相当于:

var x = text.Split(new char[] { ',' });

您也可以为自己的方法使用参数数组,使用 params 关键字:

static char GetChar(params char[] input)
{
return input[0];
}

请注意,参数数组必须是最终 参数。这就是为什么您使用的重载是Split唯一 重载以使用参数数组。查看其他重载:

Split(Char[], Int32)
Split(Char[], StringSplitOptions)
Split(String[], StringSplitOptions)
Split(Char[], Int32, StringSplitOptions)
Split(String[], Int32, StringSplitOptions)

在每一种情况下,数组都是第一个参数,所以你必须自己构造一个数组:

var x = text.Split(new char[] { ',' }, 10); // Call the (char[], int) overload

或者使用隐式类型数组:

var x = text.Split(new[] { ',' }, 10); // Call the (char[], int) overload

关于c# - 为什么 "my,string".Split (',' ) 在 .NET C# 中有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17933979/

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