у меня есть что-то похожее на следующий код, который выглядит до члена с помощью отражения:Что означает {} при проверке переменной?
private static object GetPrivateFieldValue(object target, string fieldName)
{
var targetType = target.GetType();
var targetField = targetType.GetField(fieldName, BindingFlags.NonPublic | BindingFlags.Instance);
if (targetField == null)
{
throw new NullReferenceException(string.Format("{0}.{1} is null", targetType.Name, fieldName));
}
var fieldValue = targetField.GetValue(target);
return fieldValue;
}
один раз частный случай я использую его следующим образом:
var values = (object[]) GetPrivateFieldValue(currentItem, "_values");
foreach (var fieldName in recordsReaderCacheEntry.FieldNames)
{
var valueIndex = Array.IndexOf(recordsReaderCacheEntry.FieldNames, fieldName);
var value = values[valueIndex];
currentRecordDictionary.Add(fieldName, value);
}
Это прекрасно работает до точки, он падает, если одно из значений пусто в исходном объекте, его представлено как {}
в массиве значений.
Я хочу, чтобы проверить, равно ли значение {}
, поэтому я могу заменить его нулевым идеалом.
Это, однако, не компилируется:
if (value == {})
Аналогично ниже не как:
if (value == object) //obviously
if (value == new {}) //obviously
if (value == new object{}) //i hoped it might work
if (value == null) //this never matches as strictly speaking its not null
EDIT
Добавлен решающий контекст изменения деталей на вопрос ... Извините ребята.
Итак, вы хотите знать, если массив пуст, если да, то установите его в нуль? Почему не просто: 'if (values! = Null && values.Length == 0) values = null;' –
Выражение имеет некоторое значение (например, переменную или функцию или литерал). Скобки не могут быть оценены, поэтому фигурные скобки не являются выражениями. – sircodesalot
Вы исходите из более низкого фона JavaScript, не так ли? –