Почему я не могу явно привести int к строке? - PullRequest
15 голосов
/ 06 сентября 2011

Если я попытаюсь это сделать, это не сработает:

static void Main(string[] args)
{
    int a = 5000;
    Console.WriteLine((string)a);
}

Но как-то это прекрасно работает:

static void Main(string[] args)
{
    int a = 5000;
    Console.WriteLine(a + "");
}

Почему это? Это потому, что первый пытается изменить базовый тип, а второй просто добавляет значение в строку?

Ответы [ 5 ]

47 голосов
/ 06 сентября 2011

int нельзя привести к string (1), но есть оператор +, который принимает int в качестве левого аргумента и string в качестве правого аргумента (2). Этот оператор преобразует int в string и объединяет два string s.

Лучшим подходом, вероятно, было бы просто использовать Console.WriteLine(a);, который для вас вызвал бы a.ToString().

7 голосов
/ 06 сентября 2011

Итак, вы получаете ошибку времени компиляции, верно?Проблема в том, что int явно не преобразуется в строку.

Так что

(string)a

не является допустимым кодом, но

a + ""

означает, что код будет работать, потому чтоон в основном переводится в

a.ToString() + ""

Таким образом, int преобразуется в строковое значение

5 голосов
/ 06 сентября 2011

Вы должны использовать:

static void Main(string[] args)
{
    int a = 5000;
    Console.WriteLine(a);
}

, который неявно вызывает a.ToString()

1 голос
/ 07 сентября 2011

Чтобы привести int в строку, вы должны использовать int32.parse (string)

Это неверно, метод анализа Int32 возвращает целое число, которое анализируется из строки.

Чтобы получить строковое представление другого типа данных, просто используйте .ToString () из класса объектов.Или вы используете System.Convert.ToString ()

0 голосов
/ 06 сентября 2011

Это не сработает, поскольку, поскольку вы присвоили чисто integer значение в a, вы не можете преобразовать его в string путем неявного преобразования, но это будет работать следующим образом

 static void Main(string[] args)
    {
        int a = 5000;
        Console.WriteLine(a);
    }

, что равно Console.WriteLine(a.ToString());

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...