В чем разница между строкой и строкой в ​​С#?

Для полноты, вот свалка соответствующей 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

2022-11-19T17:42:08+00:00