gpt4 book ai didi

c# - 从 char 数组到字符串 C# 的特定(精确)字符

转载 作者:行者123 更新时间:2023-11-30 13:56:13 25 4
gpt4 key购买 nike

我刚刚在一个源代码中看到这样的东西:

char[] letters = { 'k', 'n', 'p', 's' };

for (int d1 = 0; d1 < letters.Length; d1++)
{
for (int d2 = 0; d2 < letters.Length; d2++)
{
for (int d3 = 0; d3 < letters.Length; d3++)
{
for (int d4 = 0; d4 < letters.Length; d4++)
{
string left = ""+ letters[d1] + letters[d2] + letters[d3] + letters[d4];
}
}
}
}

我真正想知道的是 string strName = ""+.... 究竟是如何工作的。这些 "" 是做什么用的?我尽我所能,但没有找到答案。很抱歉,如果回答很简单,我是编程新手,所以非常感谢您的理解。

最佳答案

C# Language Specifications 的某处(7.8.4我觉得)是这样写的:

String concatenation:

string operator +(string x, string y);

string operator +(string x, object y);

string operator +(object x, string y);

These overloads of the binary + operator perform string concatenation. If an operand of string concatenation is null, an empty string is substituted. Otherwise, any non-string argument is converted to its string representation by invoking the virtual ToString method inherited from type object. If ToString returns null, an empty string is substituted.

因此 stringchar 之间的 + operatorchar 转换为 string (通过 char 的 .ToString() 方法)并将两者连接起来。

例如:

char ch = 'x';

string str = "" + ch;

被“转换”为

string str = "" + ch.ToString();

其中 ch.ToString()"x"(带双引号,所以是 string)

最后 ""+ something 是一种(安全的)调用 .ToString() 的方式,安全是因为它处理了 something 的情况== null,不调用 .ToString() 并返回空字符串。

在您的特定情况下,您可以看到该行代码如下:

string left = "" + letters[d1].ToString();
left = left + letters[d2].ToString();
left = left + letters[d3].ToString();
left = left + letters[d4].ToString();

(实际上,如果我没记错的话,它会稍微复杂一些,因为 C# 编译器通过使用对 string.Concat 的单个调用来优化多个字符串连接,但这是一个实现细节, 例如参见 https://stackoverflow.com/a/288913/613130 )

关于c# - 从 char 数组到字符串 C# 的特定(精确)字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729941/

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