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

时间:2012-02-05 13:26:27

标签: c#

好的,所以我有一个像这样的字符串数组:

string[] myStringArray = new string[2];

myStringArray[0] = "Foo";
myStringArray[1] = "Bar";

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

string foo = myStringArray[0];

或者这个:

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

我知道的基本内容,但如果你不问......

由于

6 个答案:

答案 0 :(得分:2)

你这样做:

string foo = myStringArray[0];

在字符串实例上调用.ToString只会返回相同的实例,因此您不需要它。以下是为字符串类定义此方法的方法:

public override string ToString()
{
    return this;
}

答案 1 :(得分:2)

没有。 myStringArray[0]已经是一个字符串,因此您不必自己指定ToString()。如果myStringArray[0]不是字符串,则必须这样做。

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

答案 2 :(得分:2)

您不必调用ToString()

顺便说一下,如果你反编译String类,你会发现这是ToString()实现:

public override string ToString()
{
  return this;
}

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

string foo = myStringArray[0];

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

string foo = myStringArray.First();

如果您不确定字符串数组是否始终具有值,则可以使用

string foo = myStringArray.FirstOrDefault();

希望这就是你要找的东西。