C# — это строго типизированный язык программирования, а это означает, что знание типов данных необходимо для написания эффективного кода C#. В C# одним из наиболее часто используемых типов данных является строковый тип, который может быть объявлен как String или string. Это может привести к некоторой путанице: в чем разница между String и string и когда следует использовать каждый из них?

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

Основы: что такое String и string?

String

Класс String является частью пространства имен System (System.String). Это класс, который предоставляет различные методы для манипуляций со строками, например Substring, Concat, Replace и т. д. Вы можете использовать его следующим образом:

using System;

namespace StringExample
{
    class Program
    {
        static void Main(string[] args)
        {
            String name = "Mabrouk";
            Console.WriteLine(name.ToLower()); // "mabrouk"
        }
    }
}

string

С другой стороны, string — это псевдоним String в языке C#. Это более читаемый способ объявления строковой переменной, и он синтаксически проще. string — это просто сокращение от System.String.

namespace StringExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string name = "John";
            Console.WriteLine(name.ToLower()); // "john"
        }
    }
}

Сходство

  1. Взаимозаменяемость. Вы можете без проблем использовать String и string как взаимозаменяемые.
String name1 = "Mabrouk";
string name2 = "Mahdhi";

// perfectly valid
string fullName = name1 + " " + name2;

2. Одинаковые методы. Поскольку string — это всего лишь псевдоним System.String, вы можете использовать одни и те же методы для обоих.

String name1 = "Mabrouk";
string name2 = "Mahdhi";

Console.WriteLine(name1.ToLower());
Console.WriteLine(name2.ToUpper());

Различия

Несмотря на то, что они функционально идентичны, существует несколько рекомендаций относительно того, когда использовать один вариант вместо другого.

  1. Читаемость. Многие разработчики считают, что использование string более удобочитаемо, поскольку оно хорошо сочетается с другими простыми типами, такими как int, bool и double.
  2. Пространство имен. Если вы объявили using System;, вы можете без проблем использовать String. В противном случае вам придется использовать его как System.String.
  3. Стандартизация. Большинство стандартов кодирования C# рекомендуют использовать string вместо String для локальных переменных и параметров метода. Для возвращаемых типов можно использовать любой из них, но обычно рекомендуется сохранять единообразие.

Когда использовать String или string

Используйте String, когда:

  1. Работа со статическими методами. Когда вы используете статические методы класса String, имеет смысл использовать String.
String.Concat("Hello, ", "world!");
String.Format("{0} {1}", var1, var2);

2. Требуется полное имя. Если вы работаете в среде, где пространство имен является проблемой (очень редко), вам может потребоваться указать System.String.

Используйте string, когда:

  1. Локальные переменные и параметры. Для объявления локальных переменных и типов параметров метода обычно используется string.
public void SayHello(string name)
{
    string greeting = "Hello, " + name;
    Console.WriteLine(greeting);
}

2. Удобочитаемость. Использование string обеспечивает согласованность вашего кода с использованием других встроенных типов (int, bool и т. д.).

Заключение

Типы String и string в C# функционально идентичны, но при выборе между ними следует учитывать некоторые тонкости. Для большинства разработчиков использование string для локальных переменных и параметров и использование String для вызова статических методов сделает код читабельным и согласованным.

Удачного программирования!