Подсказки по использованию Структуры C#?

Здесь вам нужно сопоставить имя учащегося с массивом studentDetails объектов и return сопоставить отметки ученика, как показано ниже.

Пример

component.ts

  getStudentMarks(studentName) : number {
    let marks = 0;
    this.studentDetails.forEach(details => {

      if (studentName == details.name) {
        marks = details.marks;
      } 
    })
    return marks;
  }

component.html

{{x.name}}

[ 119] Вот решение для стекаблиц

7
задан Community 23 May 2017 в 12:34
поделиться

7 ответов

Необходимо сделать следующие соображения о структурах:

  • структуры должны быть неизменными (изменяемые структуры не интуитивны и непредсказуемы),
  • структуры всегда имеют значение по умолчанию (общественность, без параметров) конструктор, который не может быть изменен
  • размер структуры не должен превышать 16 байтов
  • Equals и GetHashCode методы должны быть переопределены для лучшей производительности
  • реализация IEquatable<T> интерфейс рекомендуется
  • переопределение и == и != операторы также рекомендуются
11
ответ дан 6 December 2019 в 06:51
поделиться

Я почти никогда не определяю пользовательские структуры. Просто нет то, что много естественных значений вводят вокруг, IMO.

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

Я думаю, что стоит считать "Выбор Между Классами и Структурами" из "Руководства по проектированию Для Разработки Библиотек классов".

В особенности:

Не определяйте структуру, если тип не имеет все следующие характеристики:

  • Это логически представляет единственное значение, подобное типам примитивов (целое число, дважды, и так далее).

  • Это имеет размер экземпляра, меньший, чем 16 байтов.

  • Это неизменно.

  • Это не должно будет часто упаковываться.

Вы действительно разрабатываете типы со всеми теми характеристиками часто?

11
ответ дан 6 December 2019 в 06:51
поделиться

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

4
ответ дан 6 December 2019 в 06:51
поделиться

Я думаю, что основная цель структуры - сохраняет только типы переменных. Если Вы сохраняете некоторые классы в структуру - Вы неправы.

0
ответ дан 6 December 2019 в 06:51
поделиться

Спросите себя следующие вопросы о наборе данных, которые Вы моделируете со структурой:

  • Это, возможно, когда-либо должно было бы иметь, кто-либо получает/устанавливает логику?
  • Это, возможно, когда-либо должно было бы сохранить КАКУЮ-ЛИБО логику, которая является местной для данных?
  • Это, возможно, должно было бы наследовать другой набор данных?
  • Другой набор данных, возможно, должен был бы наследовать этого?

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

0
ответ дан 6 December 2019 в 06:51
поделиться

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

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

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

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

0
ответ дан 6 December 2019 в 06:51
поделиться

Использование структур должно быть ограничено тем, когда все, в чем Вы действительно нуждаетесь, является небольшой структурой данных. (поскольку Вы читаете). Я только действительно использовал бы их для самого маленького из datastructures как координаты, смещения, и иногда для графики.

Во многих отношениях можно думать о структурах в C#, как являющемся как масштабированный - вниз классы. Они - в основном то же как классы, но разработали больше для случаев, где Вы просто хотите собрать в группу некоторые данные. Они отличаются от классов следующими способами: Некоторые вещи иметь в виду

  • Структуры являются типами значения, не ссылочными типами. Это означает, что они хранятся или в стеке или в - строка (если они - часть другого объекта, который хранится на "куче"), и имейте те же пожизненные ограничения как простые типы данных.
  • Структуры не поддерживают наследование.
  • Существуют некоторые различия в способе, которым конструкторы работают на структуры. В частности, компилятор всегда предоставляет значение по умолчанию нет - конструктор параметра, которого Нельзя заменить.
0
ответ дан 6 December 2019 в 06:51
поделиться
Другие вопросы по тегам:

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