Тест для нулевых значений в C # - PullRequest
12 голосов
/ 08 июня 2011

Если я сделаю что-то вроде:

DataSet ds = GetMyDataset();

try
{
    string somevalue = ds.Tables[0].Rows[0]["col1"];
}
catch
{
    //maybe something was null
}

Есть ли хороший способ проверить нулевые значения без использования try / catch?Просто мне все равно, если значение в "col1" равно нулю, ИЛИ, если "col1" не существует, ИЛИ, если не было возвращенных строк, ИЛИ, если таблица не существует!

Может, мне все равно?:) Может быть, попытка / ловить это лучший способ приблизиться к этому, но я просто подумал, есть ли другой способ сделать это?

Спасибо!

Ответы [ 14 ]

0 голосов
/ 08 июня 2011

В прошлом я использовал небольшую оболочку пустых тестов, которые возвращают значение по умолчанию.Например:

    /// <summary>
    /// Test DBValue for DBNull and return NullReplaceValue if DBValue is DBNull
    /// </summary>
    /// <returns>Returns NullReplaceValue if DBValue is DBNull</returns>
    public static string NullStr(object DBValue, string NullReplaceValue)
    {
        if (object.ReferenceEquals(DBValue, DBNull.Value)) {
            return NullReplaceValue;
        } else {
            return Convert.ToString(DBValue);
        }
    }

Используется:

string somevalue = MyNullTests.NullStr(ds.Tables[0].Rows[0]["col1"], "Value was null");
0 голосов
/ 08 июня 2011

С точки зрения обслуживания, то, что вы делаете, очень желательно.

В противном случае вам необходимо: проверить, является ли DS нулевым, проверить, есть ли какие-либо таблицы в DataSet, проверить, чтобыпосмотрите, есть ли какие-либо строки в таблице, проверьте, существует ли столбец, проверьте, есть ли какие-либо данные в столбце.

Это, безусловно, устранит много утомительного кода.

0 голосов
/ 08 июня 2011

Вам придется проверять их все на наличие нулевого (или других нулевых типов) одного за другим, начиная сверху (это DataSet)

if (ds! = Null) if (table! =null) ...

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

0 голосов
/ 08 июня 2011

Вы проверяете DBNull.Value, например,

if (ds.Tables[0].Rows[0]["col1"] != DBNull.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...