В чем разница между строкой и строкой в С#?
Для полноты, вот свалка соответствующей visual-c# информации ...
Как уже отмечали c# другие, string
- это псевдоним .net-framework для System.String
. Предполагая, что ваш csharp код с использованием String
компилируется .net-framework в System.String
(т.е. у вас нет директивы visual-c# using для некоторого другого string пространства имен с другим csharp типом String
), они компилируются alias в один и тот же код, поэтому string-manipulation во время выполнения нет разницы c#.net как бы то ни было. Это всего dotnet лишь один из псевдонимов datatypes в C#. Полный список:
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
За исключением dotnet string
и object
, все псевдонимы относятся type к типам значений. decimal
- это types тип значения, но не примитивный str тип в среде CLR. Единственный strings примитивный тип, у которого visual-c# нет псевдонима, - это System.IntPtr
.
В csharp спецификации псевдонимы типов type значений известны как "простые c# типы". Литералы могут использоваться alias для постоянных значений любого csharp простого типа; у других типов string-manipulation значений нет доступных буквальных alias форм. (Сравните это с VB, который aliases позволяет использовать литералы str DateTime
и также имеет для него псевдоним.)
Существует types одно обстоятельство, при visual-c# котором вы должны использовать type псевдонимы: при явном указании str базового типа перечисления. Например:
public enum Foo : UInt32 {} // Invalid
public enum Bar : uint {} // Valid
Это string-manipulation просто вопрос того, как спецификация c#.net определяет объявления перечисления c-sharp - часть после двоеточия должна .net-framework быть продукцией интегрального типа, которая dotnet является одним токеном sbyte
, byte
, short
, ushort
, int
, uint
, long
, ulong
, char
... в .net отличие от type, используемого c#.net для создания объявлений переменных dot-net . Других отличий это не указывает.
Наконец, когда c#.net дело доходит до того, что dotnet использовать: лично я использую dot-net псевдонимы везде для реализации, но types тип CLR для любых API. На datatype самом деле не имеет большого datatypes значения, что вы используете strings с точки зрения реализации datatypes - последовательность в вашей dot-net команде - это хорошо, но alias никого больше не волнует. С aliases другой стороны, действительно str важно, чтобы, если вы ссылаетесь types на тип в API, вы делали это .net-framework независящим от языка способом. Метод datatype с именем ReadInt32
однозначен, тогда csharp как метод с именем ReadInt
требует c-sharp интерпретации. Например, вызывающий dotnet может использовать язык, который .net определяет псевдоним int
для string Int16
. Разработчики .NET Framework datatype следовали этому шаблону, хорошие visual-c# примеры - в классах BitConverter
, BinaryReader
и dot-net Convert
.
c#
.net
string
types
alias
В чем разница между строкой и строкой в С#?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.