Перейти к содержимому

Value c что это

  • автор:

value (Справочник по C#)

Контекстное ключевое слово value используется в методе доступа set в объявлениях свойства и индексатора. Оно аналогично входному параметру метода. Ключевое слово value ссылается на значение, которое клиентский код пытается присвоить свойству или индексатору. В приведенном ниже примере класс MyDerivedClass имеет свойство с именем Name , в котором используется параметр value для присвоения новой строки резервному полю name . С точки зрения клиентского кода эта операция выглядит как простое присвоение.

class MyBaseClass < // virtual auto-implemented property. Overrides can only // provide specialized behavior if they implement get and set accessors. public virtual string Name < get; set; >// ordinary virtual property with backing field private int _num; public virtual int Number < get < return _num; >set < _num = value; >> > class MyDerivedClass : MyBaseClass < private string _name; // Override auto-implemented property with ordinary property // to provide specialized accessor behavior. public override string Name < get < return _name; >set < if (!string.IsNullOrEmpty(value)) < _name = value; >else < _name = "Unknown"; >> > > 

Дополнительные сведения см. в статьях Свойства и Индексаторы.

Спецификация языка C#

Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.

См. также

  • Справочник по C#
  • Руководство по программированию на C#
  • Ключевые слова в C#

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Выражения L-Value и R-Value

Выражения, которые ссылаются на адреса памяти, называются выражениями l-значения. L-значение представляет значение locator или left области хранения, что означает, что оно может отображаться слева от знака равенства ( = ). L-значения часто являются идентификаторами.

Выражения, ссылающиеся на изменяемые расположения, называются «изменяемыми l-значениями». Изменяемое l-значение не может иметь тип массива, неполный тип или тип с атрибутом const . Чтобы структуры и объединения были изменяемыми l-значениями, они не должны содержать элементы с атрибутом const . Имя идентификатора обозначает место хранения, а значение переменной является значением, хранящимся в этом месте.

Идентификатор является изменяемым l-значением, если он ссылается на адрес памяти и если он принадлежит арифметическому типу, типу структуры, объединения или указателя. Например, если ptr — указатель на область хранения, то *ptr будет изменяемым l-значением, которое обозначает область хранения, на которую указывает ptr .

Любое из следующих выражений C может быть выражением l-значения.

  • Идентификатор целочисленного типа, типа указателя, структуры или объединения.
  • Выражение подстрочного индекса ( [ ] ), которое не вычисляет массив
  • Выражение выбора элемента ( -> или . )
  • Выражение унарного косвенного обращения ( * ), которое не ссылается на массив
  • Выражение l-значения в скобках.
  • Объект const (неизменяемое l-значение).

Термин «r-значение» иногда используется, чтобы описать значение выражения и отличить его от l-значения. Все l-значения являются r-значениями, но не все r-значения являются l-значениями.

Блок, относящийся только к системам Microsoft

Microsoft C включает расширение стандарта ANSI C, которое позволяет использовать приведения l-значений в качестве l-значений до тех пор, пока размер объекта не удлиняется с помощью приведения. (Дополнительные сведения см. в разделе Преобразования приведения типов.) В следующем примере показана эта функция:

char *p ; short i; long l; (long *) p = &l ; /* Legal cast */ (long) i = l ; /* Illegal cast */ 

В Microsoft C расширения Microsoft по умолчанию включены. Используйте параметр компилятора /Za для отключения этих расширений.

Завершение блока, относящегося только к системам Майкрософт

Что такое rvalue и lvalue?

На разных ресурсах нашел разные определения rvalue , lvalue . Как же правильно? right value или read value ? left value или locator value ?

Отслеживать
28.8k 12 12 золотых знаков 59 59 серебряных знаков 118 118 бронзовых знаков
задан 2 авг 2018 в 10:03
2,904 20 20 серебряных знаков 44 44 бронзовых знака
Правильно left и right
2 авг 2018 в 10:22
Никак не правильно, это не расшифровывается. Но произошло от right и left.
2 авг 2018 в 10:26

На мой взгляд, правильный первый вариант, так как взять к примеру простое выражение: a = b + c ,где (a = lvalue), a (b + c = rvalue). Судя по примеру lvalue подразумевает как бы left, но никак не read, тоже самое можно сказать и про rvalue.

2 авг 2018 в 11:22

О чем вопрос вообще? Почему в заголовке речь идет о «rvalue and lvalue references«, а в теле вопроса ни слова про references нет и идет речь просто о rvalue и lvalue? В качестве «принятого» выбран ответ, который к «rvalue and lvalue references» вообще не имеет никакого отношения. Что за бессмысленная каша?

2 авг 2018 в 14:32

@Dima Khodan: Нет. Основным критерием качества вопросов (и ответов) на SO являются их полезность для последующих читателей. Если заголовок вопроса никак не соответствует его содержанию, то ценность вопроса — «ниже плинтуса» и он подлежит правке или удалению. Ваше «тут все прекрасно поняли суть» никакого значения не имеет. Я еще раз повторю: почему в заголовке речь идет о «references«? Если ваш вопрос не имеет никакого отношения к «references», то — исправляйте заголовок.

2 авг 2018 в 21:39

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Исходно речь шла про правую и левую части относительно оператора присваивания. Но правильного варианта такой простой расшифровки нет и быть не может. Термины так и останутся rvalue и lvalue . А вот какой в них вложен смысл чётко прописано в стандарте. Всё это образует категории выражений.

иерархия выражений

  • glvalue (“generalized” lvalue) Выражение, чьё вычисление определяет сущность объекта, битового поля или функции.
  • prvalue (“pure” rvalue) Выражение, чьё вычисление инициализирует объект, битовое поле или вычисляет значение операнда оператора, с соответствии с контекстом использования. Например, литералы 42 , true , nullptr за исключением строковых литералов, которые являются lvalue выражениями.
  • xvalue (“eXpiring” lvalue) Это glvalue, которое обозначает объект или битовое поле, чьи ресурсы могут быть повторно использованы (обычно потому, что они находятся около конца своего времени жизни). Например, результат вызова std::move даёт выражение xvalue.
  • lvalue Это glvalue, которое не является xvalue. Например, имя переменной, функции или члена-данных, независимо от их типа, даже переменная, имеющая тип rvalue-ссылки, образует выражение lvalue.
  • rvalue Это prvalue или xvalue.

Таким образом любое выражение есть в первую очередь lvalue, xvalue или prvalue. rvalue — это уже обобщение.

Отслеживать
ответ дан 2 авг 2018 в 10:27
28.8k 12 12 золотых знаков 59 59 серебряных знаков 118 118 бронзовых знаков
Только вопрос такой. Что значит неполный тип?
2 авг 2018 в 12:04

@DimaKhodan A class that has been declared but not defined, an enumeration type in certain contexts (9.6), or an array of unknown bound or of incomplete element type, is an incompletely-defined object type. Incompletely-defined object types and cv void are incomplete types (6.7.1). Objects shall not be defined to have an incomplete type.

2 авг 2018 в 12:48

Не знаю, что Вы имеете ввиду под вопросом «как правильно». rvalue и lvalue — это категории выражений. Вот что написано в стандарте:

— A glvalue is an expression whose evaluation determines the identity of an object, bit-field, or function.
— A prvalue is an expression > whose evaluation initializes an object or a bit-field, or computes the value of the operand of an operator, as specified by the context in which it appears.
— An xvalue is a glvalue that denotes an object or bit-field whose resources can be reused (usually because it is near the end of its lifetime).
— An lvalue is a glvalue that is not an xvalue.
— An rvalue is a prvalue or an xvalue.

//.
[Note: Historically, lvalues and rvalues were so-called because they could appear on the left- and right-hand side of an assignment (although this is no longer generally true); glvalues are “generalized” lvalues, prvalues are “pure” rvalues, and xvalues are “eXpiring” lvalues. Despite their names, these terms classify expressions, not values. — end note]

Монитор Эмоций

C-Value: Интегральный показатель клиентоориентированности передней линии

Клиентоориентированность – это, в частности, непрерывное совершенствование бизнес-процессов и улучшение качества работы персонала с целью повышения качества услуг. Качество услуги – это степень соответствия ожиданий клиентов тому, что они получают. Лучшим показателем качества услуги является эмоциональная реакция клиентов в точке получения этой услуги (в точке контакта). Например, когда в банке, МФЦ, магазине мы получаем больше, чем ожидали, это вызывает у нас радость, мы улыбаемся. Такая эмоциональная реакция соответствует хорошему качеству услуги. Если мы получаем меньше, чем ожидали, или к нам предъявляют требования, о которых мы не знали, то это нас расстраивает — вызывает удивление, печаль, неприязнь, иногда страх. Такая реакция – показатель плохого качества услуги. Если же мы получаем приблизительно то, что ожидали, то это оставляет нас равнодушными. Качество услуги — удовлетворительное.

Однако ожидания у всех людей разные. То, что у одного человека вызывает радость или страх, другого оставляет равнодушным. Кроме этого, один человек приходит в банк, МФЦ, магазин уже недовольным. Другой же, наоборот, приходит уже счастливым. Поэтому, чтобы точно оценить, в какой степени бизнес-процессы и персонал банка, МФЦ, магазина и т.п. соответствует ожиданиям клиентов, нужно измерять не абсолютные значения Счастья, Гнева Страха и т.д., а только величину изменения этих эмоций в результате общения клиента с персоналом передней линии. Тогда разница между числом положительных и отрицательных эмоций, возникающих в процессе общения клиента, является показателем клиентоориентированности передней линии банка, МФЦ, магазина. Если разница положительная – клиентоориентированность высокая. Если разница отрицательная, клиентоориентированность низкая.

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

Измерение эмоциональных всплесков и вычисление C-Value

Для возможности измерения эмоциональных всплесков необходимо выполнение следующих условий:

  1. Лицо клиента должно находиться в зоне видимости камеры не менее 6 секунд.
  2. Зонд ProLAN Emotions Probe должен работать в режиме, при котором в каждый момент времени оцениваются эмоции только одного человека (не группы людей). Это параметр настройки Зонда.

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

  1. В течение определенного периода времени (время калибровки — не менее 5 секунд) вычисляется Среднее значение эмоции.
  2. Среднее значение эмоции сравнивается со значением, полученным за последнюю секунду (время Тест). Вычисляется разница между этими значениями.
  3. Если разница превосходит величину порогового значения (настраивается, по умолчанию – 10 пунктов), то это определяется как эмоциональный всплеск. Если при этом разница положительная, то это всплеск вверх. Если разница отрицательная, то всплеск вниз.
  4. Если два всплеска идут сразу друг за другом без перерыва, то учитывается только первый.

По данному алгоритму вычисляются всплески всех эмоций, как положительных (Счастье), так и отрицательных (Гнев, Неприязнь и т.д.)

C-Value вычисляется по формуле:

C-Value = (Happiness Count — Negative Emotions Count)/Contacts Count

  1. Happiness Count – число всплесков уровня Счастья клиентов; число раз, когда разница между текущем уровнем Счастья и уровнем Счастья (у тех же клиентов) за определенный предшествующий период времени превысила определенное значение.
  2. Negative Emotions Count – число всплесков уровня Гнева, Печали, Неприязни, Страха клиентов; число раз, когда разница между текущем уровнем Гнева, Печали, Неприязни, Страха и средним уровнем этих эмоций (у тех же клиентов) за определенный предшествующий период времени превысила определенное значение.
  3. Contacts Count – число контактов клиентов с персоналом передней линии.

C-Value vs. Smile-Index

Если сравнивать С-Value и Smile-Index, то С-Value точнее, но область его применения уже. Если для измерения Smile-Index видеокамеры можно разместить на входе, в зоне ожидания, рядом с кассой супермаркета и оценивать эмоциональный фон нескольких человек одновременно, то C-Value измеряется для каждого клиента в отдельности, и оцениваемый клиент должен находиться в видимости камеры, как минимум, в течение 6 секунд. Плюс к этому, Smile-Index учитывает только абсолютные значения уровня Счастья, и не учитывает его изменение. В C-Value, наоборот, учитывается только изменение уровня Счастья, а его абсолютные значения не учитываются. Кроме этого, наряду с уровнем Счастья, в C-Value учитываются также уровни Гнева, Печали, Неприязни, Страха.

С-Value и Smile-Index дополняют друг друга. Если вы хотите использовать только один показатель, то в тех случаях, когда можно использовать C-Value (например, для оценки качества обслуживания клиентским менеджером в банке), он предпочтительнее. Если С-Value измерить сложно (например, для оценки качества работы кассира супермаркета), используйте Smile-Index.

Другие применения C-Value:

  1. Оценка воздействия рекламных роликов на потенциальных потребителей (целевую аудиторию) до её выпуска (prerelease).
  2. Оценка личностных качеств претендентов на вакансии, связанные с обслуживанием клиентов (клиентские менеджеры, продавцы, официанты и т.п.)
  3. Оценка привлекательности различных товаров при проведении маркетинговых исследований (холл-тесты, дегустации и т.п.)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *