Почему я не могу явно ввести int в строку?

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

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

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

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

Итак,

(string)a

неверный код, но

a + ""

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

a.ToString() + ""

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

который равен Console.WriteLine(a.ToString());