В чем разница между строкой и строковым ключевым словом в c #

Если вы пришли из другого фона программирования (например, 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 является предпочтительным.
Ссылка на основную публикацию
Adblock
detector