Содержание
Если вы пришли из другого фона программирования (например, Java), вы можете заметить, что в C # вы можете использовать string и String для объявления строковой переменной в вашем коде.
String textA = "Hello";
string textB = "Hello";
И вы можете спросить себя, оба работают в любом случае, но есть ли разница между ними? технически нет.
string
это псевдоним в C # для System.String
, Это можно сравнить в случае, как int
а также System.Int32
, просто целое число или просто как bool
а также Boolean
, Оба они скомпилированы в System.String в IL (промежуточный язык)
string
это зарезервированное слово и String
это имя класса. Это означает, что строка не может быть использована как имя переменной сама по себе, т.е.
StringBuilder String = new StringBuilder(); // Compile succesfully
StringBuilder string = new StringBuilder(); // Doesn't compile
Поэтому удобно использовать строку, код, использующий строку, никогда не сломается, но есть тонкий шанс этот код с помощью String
будут. (Вы можете переопределить String
, но нет string
).
Если вам нужно обратиться конкретно к классу, рекомендуется использовать String
т.е.
Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0:C2} per ounce.", pricePerOunce);
string
это всего лишь один из всех псевдонимов, встроенных в C #, в отличие от Java. Вы можете увидеть все псевдонимы в следующем списке:
object: System.Object
string: System.String
bool: System.Boolean
byte: System.Byte
sbyte: System.SByte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
float: System.Single
double: System.Double
decimal: System.Decimal
char: System.Char
Как сказано выше, вы можете использовать псевдонимы даже без импорта use System;
Окончательный вывод
string
является ключевое слово, а вы не может использовать строку в качестве идентификатора.
String
не является ключевое слово, а вы Можно используйте его как идентификатор:
string String = "I am a string";
Строка с ключевым словом является псевдонимом для System.String, кроме вопроса о ключевом слове, они в точности эквивалентны, поэтому:
typeof(string) == typeof(String) == typeof(System.String)
Заметки
- Ты можешь использовать
string
без импорта какого-либо компонента, напротивString
как ты не можешь использоватьString
безusing System;
заранее. - Вы не можете использовать строку в отражении; ты должен использовать
String
, - Чтобы избежать путаницы используйте один из них последовательно. Но с точки зрения передового опыта, когда вы делаете объявление переменных, это хорошо использовать
string
и когда вы используете его в качестве имени класса, тоString
является предпочтительным.