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