Вы должны определить thread
в методе данных
data () {
return {
thread: {
body: '',
}
}
}
Кроме того, голова должна быть определена как метод, а не как свойство.
head () {
return {
meta: [
{
hid: 'description',
name: 'description',
content: this.thread.body
}
]
}
}
Используйте формы, которые были особенно реализованы для Вас командой C#. Если кто-либо возражает, скажите им, что Anders сказал, что это было хорошо.
То, что я говорю, flippantly, то, что большая работа вошла в интеграцию nullable типов в c#, чтобы дать Вам хороший опыт программирования.
Обратите внимание, что с точки зрения производительности, обе формы компилируют вниз в тот же IL, т.е.:
int? i = 1;
bool isINull = i == null;
int j = (int)i;
Заканчивается как это после того, как компилятор C# будет иметь к нему:
int? i = 1;
bool isINull = !i.HasValue;
int j = i.Value;
Я использовал бы это:
long? i = 1;
...some code...
long j = i ?? 0;
Это означает, если я буду пустым, то чем 0 будет присвоен.
Я всегда использовал бы (я == пустой указатель) форма. Это выражает то, что Вы делаете.
WRT второй вопрос, я думаю, что любая форма прекрасна. Однако я всегда проверял бы его по пустому указателю сначала и принимал бы соответствующие меры - возможно, оборачивание той проверки и действия во вспомогательном методе (часто, это просто устанавливает значение по умолчанию).
Я склонен использовать первое на обоих, потому что, поскольку это должно поддерживаться позже в его жизненный цикл, они кажутся легче понять что намерение исходного устройства записи.
Я не использовал Типы Nullable на практике, но для второго, я на самом деле предложил бы использовать j. GetValueOrDefault (). Документация предполагает, что последний на самом деле бросил бы InvalidOperationException в случае нулевого значения. В зависимости от внутренней реализации explict долгое время бросает оператор?, бывший мог бы, также. Я придерживался бы GetValueOrDefault и рассматривал бы пустой/по умолчанию случай соответственно.
Я обычно склонен склоняться к первой опции в обоих сценариях, так как это более 'примитивно', ориентировался настроенный против объектно-ориентированного (который был действительно, что мы шли для), но это действительно не имеет значения так очень
Открытый Отражатель. HasValue является поиском на булевом флаге, который установлен, когда значение изменяется. Таким образом с точки зрения циклов поиск будет быстрее, затем выдерживают сравнение.
public Nullable(T value)
{
this.value = value;
this.hasValue = true;
}
private bool hasValue;
internal T value;
public bool HasValue
{
get
{
return this.hasValue;
}
}
Они - оба то же, но я использовал бы бывшую версию на обоих, так как это более распространено в языке: сравнение с пустым указателем и бросающий к типу.