С# Строка и строка. Почему Visual Studio обрабатывает их по-разному?

Если я создаю обычное консольное приложение с нормальной основной точкой входа следующим образом

using System;

namespace ConsoleApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            // do stuff
        }
    }
}

затем выберите его в визуальной студии, все в порядке.

введите описание изображения здесь

Однако, если я напишу код следующим образом:

using System;

namespace ConsoleApp
{
    public class Program
    {
        public static void Main(String[] args)
        {
            // note the capital S in String
        }
    }
}

тогда все не в порядке....

введите описание изображения здесь

Кто-нибудь знает, почему он не поднимает строку [], но доволен строкой [], пожалуйста?

edit: Извлечение из комментариев, похоже, является ошибкой в ​​Visual Studio 2012 и 2013. Предположительно, он также присутствует в более ранних версиях, но, похоже, был исправлен в VS2015. Это не проблема сама по себе, и, как отмечено, код все еще компилируется и исполняется с помощью строки [] или String [] Мне было бы интересно узнать причину ошибки в VS. Я бы предположил, что окно редактора свойств не Using System;?

Ответы

Ответ 1

Вы уверены, что ваш пример, который использует String, действительно компилируется?

Нижний регистр String - это ключевое слово, эквивалентное использованию System.String; поскольку ваш пример не импортирует пространство имен System, я ожидаю, что это вызовет ошибки компиляции, которые могут привести к тому, что свойства проекта не смогут определить ваш метод Main.

Добавьте директиву using System; в файл кода или явно используйте System.String вместо String, чтобы сделать тип известным компилятору.