Информация об изменениях

Сообщение Re[66]: MS забило на дотнет. Питону - да, сишарпу - нет? от 09.09.2021 13:46

Изменено 09.09.2021 14:17 Serginio1

Re[66]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:

S>> Ну копируем тело конструктора предка. О чем я и писалю

S>Давайте проделаем этот мысленный эксперимент на практике:
S>
[Inherits(typeof(Parent))]
S>public partial struct Child
S>{
S>  private int _b;
S>  public int GetB() = >_b;
S>  public Child(int b) => _b = b;
S>  {
S>    _b = b;
S>    _a = a; // error CS0103: The name 'a' does not exist in the current context
S>  }
S>}
S>

S>Упс! Тело конструктора предка нам ничем не помогает.
Всегда можно ручками самому прописать, а при генерации проверить есть ли уже такой.
S>>>Возникает вопрос: а что за сценарий у нас такой, где нужны именно структуры, и именно наследование?

S>> Ну как раз есть у нас Дженерик тип, но хочется сделать расширение для конкретного типа.

S>>Для класса просто наследуемся от Account<T>, для расширения для конкретного типа
S>Это прекрасно — но со структурой-то какой сценарий? Почему вам нужна именно структура, а не класс со всеми его преимуществами?
Ну как раз при взаимодействии с нативным кодом, где передаются массив структур.
Ну и на самом деле SG может выступать как специализация из аля шаблона С++. То есть максимально приблизить к нативному коду.
Re[66]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:

S>> Ну копируем тело конструктора предка. О чем я и писалю

S>Давайте проделаем этот мысленный эксперимент на практике:
S>
[Inherits(typeof(Parent))]
S>public partial struct Child
S>{
S>  private int _b;
S>  public int GetB() = >_b;
S>  public Child(int b) => _b = b;
S>  {
S>    _b = b;
S>    _a = a; // error CS0103: The name 'a' does not exist in the current context
S>  }
S>}
S>

S>Упс! Тело конструктора предка нам ничем не помогает.
Всегда можно ручками самому прописать, а при генерации проверить есть ли уже такой.
S>>>Возникает вопрос: а что за сценарий у нас такой, где нужны именно структуры, и именно наследование?

S>> Ну как раз есть у нас Дженерик тип, но хочется сделать расширение для конкретного типа.

S>>Для класса просто наследуемся от Account<T>, для расширения для конкретного типа
S>Это прекрасно — но со структурой-то какой сценарий? Почему вам нужна именно структура, а не класс со всеми его преимуществами?
Ну как раз при взаимодействии с нативным кодом, где передаются массив структур.
Ну и на самом деле SG может выступать как специализация из аля шаблона С++. То есть максимально приблизить к нативному коду.
Ну и учитывая Preview Features in .NET 6 – Generic Math
Еще легче переносить шаблоны С++