Символ «новый» в C #, как его использовать? [закрыто]

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

Почему необходимо использовать 'new string ()'? В разных языках программирования я никогда не сталкивался с необходимостью использования 'new string ()'. Заранее спасибо :))

// C #

char[] reversedName = name.ToCharArray();
Array.Reverse(reversedName); 
string result = new string(reversedName);
-10
задан JohnB 30 July 2019 в 06:34
поделиться

3 ответа

String класс как другие классы на любом Объектно-ориентированном языке программирования, и мы можем создать объект его с помощью new ключевое слово как, мы сделали бы для создания объекта любого типа.

В Вашем определенном сценарии выше Вас имеют char массив и String, класс имеет перегрузку конструктора, которые берут char[] в качестве входа и создают String. Таким образом, Вы вызываете конструктора, использующего new String.

Поэтому то, что происходит, является Вами, сказал для создания объекта строки типа с помощью char[], который обеспечивается в конструкторе ее.

0
ответ дан 9 September 2019 в 21:05
поделиться

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

string m = "Hello World". 

Однако Ваш reversedName массив char , который не конвертируем к string, как. Так следующая работа wonВґt:

string myString = "Hello World".ToCharArray();

, потому что ToCharArray - поскольку имя предлагает - возвраты char[], не string и thereВґs никакое преобразование между двумя.

ThatВґs, почему необходимо создать новую строку с помощью конструктор, который принимает массив символа .

0
ответ дан 9 September 2019 в 21:05
поделиться

new - Ключевое слово используется для создания нового экземпляра класса.

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

существует несколько путей:

  1. Вызов Конструктор, который принимает Ваш вход (Вы сделали это, потому что существует конструктор для string, который принимает char[])
  2. Использование Бросок (Никакой Бросок, доступный от char[] до string)
  3. Использование Преобразовывать-метод (Не доступный для преобразования значений к string как далекий я знают)

Здесь класс в качестве примера, который реализует явные и неявные броски (Который System.String не делает):

class MyString
{
    private string stringValues;

    // Constructors
    public MyString(char[] charArray) { stringValues = new string(charArray); }
    public MyString(string str) { stringValues = str; }
    public MyString() { }

    // ToString for writing to console
    public override string ToString() { return stringValues; }

    // Operator to concat "MyStrings"
    public static MyString operator +(MyString a, MyString b) { return new MyString(a.ToString() + a.ToString()); }

    // Implicit Cast-operator string to MyString
    public static implicit operator MyString(string str) { return new MyString(str); }

    // Explicit Cast-operator char-array to MyString
    public static explicit operator MyString(char[] str) { return new MyString(str); }
}

internal static void Main(string[] args)
{
    MyString tmp = new MyString("Initialize by constructor with parameter string");
    Console.WriteLine(tmp);

    tmp = new MyString("Initialize by constructor with parameter char-array".ToCharArray());
    Console.WriteLine(tmp);

    tmp = new MyString("x") + new MyString("+") + new MyString("y");
    Console.WriteLine("Use of '+ operator'" + tmp);

    tmp = "Initialize by creating string and using implicit cast for strings";
    Console.WriteLine(tmp);

    tmp = (MyString)("Initialize by creating char-array and using explicit cast for strings".ToCharArray());
    Console.WriteLine(tmp);
}
0
ответ дан 9 September 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: