2009-07-06 5 views

ответ

13

Это точно такие же. «string» - это просто псевдоним для «System.String» в C#

3

Строка и строка разрешены для System.String. Так что нет никакой разницы.

1

Да, строка является псевдонимом для System.String в C#
проверить это сами:

public static void Main(string[] args) 
    { 
     string s1 = "abc"; 
     System.String s2 = "xyz"; 
     Type t1 = s1.GetType(); 
     Type t2 = s2.GetType(); 

     System.Console.WriteLine(t1.Equals(t2)); 
     return ; 
    } 
1

Да, нет абсолютно никакой разницы с точки CLR зрения: string против String чисто C# синтаксически.

+1

, но почему этот синтаксический сахар необходим/полезен? Я никогда не понимал этого. Я пришел из мира MS, и для меня (хотя это ясно) всегда был просто путаницей людей, а также непоследовательностью в стиле программирования. Некоторые из команд используют String, другие string .. – Juri

+1

Просто примитивные типы, такие как string, int или bool, обычно имеют соответствующее языковое ключевое слово. Вы бы не хотели писать Int32 каждый раз, когда хотите int ... –

2

В C# строка просто псевдоним для типа CLR System.String, поэтому нет разницы в производительности. Непонятно, почему MS решила включить этот псевдоним, в частности, поскольку другие псевдонимы (int, long и т. Д.) Являются типами значений, а не ссылочными типами.

В моей команде мы решили, что статические методы класса строк должны быть указаны как, например. String.ToUpper(), а не string.ToUpper(), чтобы быть более совместимым с другими языковыми версиями.

В конечном счете, какая версия, которую вы используете, зависит от вас, но вы должны решить, какой вариант использовать в каком контексте, чтобы улучшить согласованность.