Вот в процессе разработки "недетского" приложения на C# возник совсем "детский" вопрос: "Есть ли разница между двумя данными типами?":
String str1;
string str2;
Вот в процессе разработки "недетского" приложения на C# возник совсем "детский" вопрос: "Есть ли разница между двумя данными типами?":
String str1;
string str2;
Нет, string - это аллиас класса String, так же как int - аллиас Int32, long - Int64 и прочее.
Вот таблица из книги Рихтера "CLR via С#"

Что он говорит по этому поводу:
Я не могу согласиться со следующим утверждением из спецификации языка С#: «С точки зрения стиля программирования предпочтительней использовать
ключевое слово, а не полное системное имя типа». Я стараюсь использовать имена типов FCL и избегать имен элементарных типов. На самом деле мне бы хотелось, чтобы имен элементарных типов не было совсем, а разработчики употребляли только имена FCL-типов.
И приводит аргументы почему, почитайте, хорошая книга.
А вот как же понимать одноименный "алиасный" тип string по отношению к String ?
– Free_man Jun 29 '12 at 18:11Просто string - это алиас класса String(), т.е. в коде пишем string тоже что new System.String
короче говоря
string x = new System.String(' ', 5);
Вот список пвсевдонимов CLR Типов:
Пвсевдоним CLR тип
string System.String
sbyte System.SByte
byte System.Byte
short System.Int16
ushort System.UInt16
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
char System.Char
float System.Single
double System.Double
bool System.Boolean
using string = System.String;
функционалом чем-то похожее не #typedef в C++
– Free_man Jun 29 '12 at 18:16