#c# #servicemanager
#c# #servicemanager
Вопрос:
Каков наилучший способ обнулить элемент, если вы не знаете, каким может быть его значение? Я просматриваю объекты, которые могут быть любого типа из объекта. Как я могу выполнить приведение, если я не знаю, каким может быть возвращаемое значение?
string viewValue
= emop.Object[null, viewDetails.Columns[i].Property] != null
? emop.Object[null, viewDetails.Columns[i].Property].Value.ToString()
: string.Empty;
Я подумал, что, возможно, было бы лучше привести все объекты в виде строки, но некоторые элементы не работают, говоря, что элемент равен нулю.
Комментарии:
1. Непонятно, зачем вам нужно преобразовывать их в строку, загружая память с двойными данными. в чем причина этого?
2. О, я думаю , вы также можете проверить,
Value
нетnull
(не толькоemop.Object[null, viewDetails.Columns[i].Property]
). Не делайте этого в одной строке, это достаточно запутанно…3. Ваш код терпит неудачу, потому что вы проверяете, не равен ли элемент null, но затем не проверяете, не равно ли значение null .Value перед вызовом . toString() на нем.
4. @JoelC можете ли вы добавить пример, пожалуйста, JoelC с примером, чтобы я мог отметить вас спасибо
Ответ №1:
Без одобрения вашего преобразования в строку для всех объектов, поскольку я не знаю, с какими данными вы работаете. Я считаю, что это исправило бы вашу фактическую ошибку.
string viewValue
= emop.Object[null, viewDetails.Columns[i].Property] != null amp;amp; emop.Object[null, viewDetails.Columns[i].Property].Value != null
? emop.Object[null, viewDetails.Columns[i].Property].Value.ToString()
: string.Empty;
Я добавил проверку not null для свойства .Value. В противном случае вызывается.toString() может вызывать нулевой объект.