我需要使用.ToString()来使字符串等于字符串数组的索引吗

本文关键字:字符串 数组 索引 ToString | 更新日期: 2023-09-27 18:22:27

好的,所以我有一个字符串数组,如下所示:

string[] myStringArray = new string[2];
myStringArray[0] = "Foo";
myStringArray[1] = "Bar";

要声明一个新字符串并使其等于数组中的第一个字符串,我要这样做吗:

string foo = myStringArray[0];

或者这个:

string foo = myStringArray[0].ToString();

基本的东西我知道,但如果你不问。。。

感谢

我需要使用.ToString()来使字符串等于字符串数组的索引吗

您可以这样做:

string foo = myStringArray[0];

在字符串实例上调用.ToString只需返回相同的实例,因此您不需要它

public override string ToString()
{
    return this;
}

否。myStringArray[0]已经是一个字符串,所以您不必自己指定ToString()。如果myStringArray[0]不是一个字符串,您就必须这样做。

ToString()是一个非常低级的调用,它是为最基本的object定义的。所以它存在于所有的C#对象上,你可以在任何事情上调用它,即使是在不需要它的事情上。
例如,你可以编写"string".ToString().ToString(),编译器不会介意,它只会显示为"string"

您不必调用ToString()

顺便说一句,如果你反编译String类,你会看到这是ToString()的实现:

public override string ToString()
{
  return this;
}

正如其他人所说,string上的ToString()返回字符串本身,因此调用ToString()完全没有用。

事实上,它甚至是危险的,因为如果您的字符串是null,它可能会抛出NullReferenceException

不需要使用ToString()String[]的项已经是字符串。

string foo = myStringArray[0];

以上将达到目的,如果你有LINQ,那么你可以使用

string foo = myStringArray.First();

如果您不确定字符串数组是否一直都有值,那么您可以使用

string foo = myStringArray.FirstOrDefault();

希望这就是你想要的。