Парсинг бинарных сообщений
От: _FRED_ Черногория
Дата: 25.01.23 11:18
Оценка: +1
Здравствуйте, gandjustas, Вы писали:

S>>Вот в С++ любят. И ведь приятнее же написать

G>В C++ вообще любят извращения.
S>>stringBuilder += "test" чем stringBuilder.Append("test") ?
G>stringBuilder += "test" эьо stringBuilder = stringBuilder + "test", он должен возвращать новый объекти не изменять старый. Поэтому stringBuilder.Append

Можете конкретнее на проблему указать: вроде всё норм (sharplab.io)
using System.Text;

var builder = new MyStringBuilder();
builder.Append("A");
builder.Append("B").Append("C");

builder += "D";

Console.WriteLine($"Builder is {builder}"); // Builder is ABCD

builder += "E" + builder + "F"; // And even…

Console.WriteLine($"Builder now is {builder}"); // Builder now is ABCDEABCDF

file class MyStringBuilder
{
  private StringBuilder Builder { get; } = new StringBuilder();

  public MyStringBuilder Append(string? value) {
    Builder.Append(value);
    return this;
  }

  public override string ToString() => Builder.ToString();

  public static MyStringBuilder operator+(MyStringBuilder builder, string value) => builder.Append(value);
}


Описанная вами ниже "х + х + х" тут не случится, потому что речь об операторе сложения билдера и строки.

Это я к тому, что в отсутствии перегрузки оператора, кажется, нет ни технической ни даже логической проблем.

G>Да и в целом со стрингбилдером крайне редкий кейс, чтобы для него вводить такое в язык.


На сколько я знаю, в BCL вообще не переопределяют операторы там, где это не общеизвестно, типа арифметики. То есть вопрос не в редкости, а в принципиальном подходе. Что не мешает делать такое "для себя", потому что самому со своим DSL весьма не плохо можетб быть.
Help will always be given at Hogwarts to those who ask for it.
Отредактировано 25.01.2023 11:36 _FRED_ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.