Как проверить объект пустым или пустым в С#.NET 3.5?

Вопрос:Если объекты содержат null или empty, то как проверить или проверить условие для того же? Как bool проверить, является ли объект obj null или Empty У меня код следующим образом: class Program { static void Main(string[] args) { object obj = null; double d = Convert.ToDouble(string.IsNullOrEmpty(obj.ToString()) ? 0.0 : obj); Console.WriteLine(d.ToString()); } } С помощью

Вопрос:

Если объекты содержат null или empty, то как проверить или проверить условие для того же?

Как bool проверить, является ли объект obj null или Empty

У меня код следующим образом:

class Program { static void Main(string[] args) { object obj = null; double d = Convert.ToDouble(string.IsNullOrEmpty(obj.ToString()) ? 0.0 : obj); Console.WriteLine(d.ToString()); } }

С помощью этого кода я получаю NullReference Exception как Object reference not set to an instance of an object.

Справка Pls.

Здесь я не получаю….

Как проверить, является ли этот объект null или Empty без преобразования в .ToString()??

Есть ли способ проверить то же самое?

Лучший ответ:

Проблема, с которой вы сталкиваетесь, заключается в том, что ваш объект имеет тип, ну, объект. Чтобы оценить его с помощью string.IsNullOrEmpty, вы должны передать свой объект с помощью cast to (string)

так:

static void Main(string[] args) { object obj = null; double d = Convert.ToDouble(string.IsNullOrEmpty((string)obj) ? 0.0 : obj); Console.WriteLine(d.ToString()); }

Это будет работать отлично, поскольку вы явно не вызываете .ToString на свой (несуществующий) объект.

Ответ №1

Вы получаете нулевую ссылку, потому что выполняете obj.ToString(), который возвращает возвращаемое значение метода obj ToString(). Проблема в том, что в предыдущей строке вы устанавливаете obj в null, чтобы получить ссылку на объект не… error

Чтобы сделать работу с кодом, вам нужно выполнить:

//This will check if it a null and then it will return 0.0 otherwise it will return your obj. double d = Convert.ToDouble(obj ?? 0.0);

Теперь ваш код, как и сейчас, всегда будет 0.0

Без нулевого коалесцирования: (??)

double d = Convert.ToDouble(obj ? 0.0 : obj);

ИЗМЕНИТЬ

Если я правильно понимаю из комментариев, которые вы хотите знать, является ли объект пустой или пустой. Вы можете сделать это, выставив сначала строку, а не вызов метода ToString, который делает что-то совершенно другое:

string objString = (obj as string); double d = Convert.ToDouble(string.IsNullOrEmpty(objString) ? «0.0» : objString); Ответ №2class Program { static void Main(string[] args) { object obj = DBNull.Value; if(obj != DBNull.Value) { double d = Convert.ToDouble(obj); Console.WriteLine(d.ToString()); } } } Ответ №3

Вы можете использовать оператор ??. Он известен как оператор null-coalescing.

Ответ №4

Похоже, что вы хотите сделать это:

object obj = null; double d; if (!double.TryParse(Convert.ToString(obj), out d)) { d = 0.0; }

Но вопрос не имеет большого смысла.

Ответ №5

Вы не должны удивляться, что с этим кодом вы получаете NullReferenceException. Нарушающая часть

obj.ToString()

Если вы написали

object obj = null; string s = obj.ToString();

вы ожидаете NullReferenceException. Поскольку вызов ToString происходит перед вызовом string.IsNullOrEmpty, исключение генерируется перед проверкой нулевой или пустой строки.

Ответ №6

Следующий код может быть более безопасным способом его достижения.

if(obj != null && !string.IsNullOrEmpty(obj.ToString())) { }

Этот код избавляет нас от того, что объект является нестроковым.

Оцените статью
Добавить комментарий