120

SQL Server では、IsNull()関数を使用して値が null かどうかを確認し、null の場合は別の値を返すことができます。今、C#に似たようなものがあるかどうか疑問に思っています。

たとえば、次のようなことをしたい:

myNewValue = IsNull(myValue, new MyValue());

それ以外の:

if (myValue == null)
  myValue = new MyValue();
myNewValue = myValue;

ありがとう。

4

10 に答える 10

220

これは null 合体 ( ??) 演算子と呼ばれます。

myNewValue = myValue ?? new MyValue();
于 2008-10-03T23:01:24.233 に答える
14

残念ながら、DBNull で動作する null 合体演算子に相当するものはありません。そのためには、三項演算子を使用する必要があります。

newValue = (oldValue is DBNull) ? null : oldValue;
于 2008-10-04T00:20:57.350 に答える
4

Equals メソッドを使用します。

object value2 = null;
Console.WriteLine(object.Equals(value2,null));
于 2011-11-14T07:49:45.160 に答える
1

DB Null を操作するために、VB アプリケーション用の束を作成しました。VB の組み込み Cxxx 関数に似ているため、Cxxx2 と呼びます。

私の CLR Extensions プロジェクトでそれらを見ることができます

http://www.codeplex.com/ClrExtensions/SourceControl/FileView.aspx?itemId=363867&changeSetId=17967

于 2008-10-04T04:50:19.507 に答える
0
    public static T IsNull<T>(this T DefaultValue, T InsteadValue)
    {

        object obj="kk";

        if((object) DefaultValue == DBNull.Value)
        {
            obj = null;
        }

        if (obj==null || DefaultValue==null || DefaultValue.ToString()=="")
        {
            return InsteadValue;
        }
        else
        {
            return DefaultValue;
        }

    }

//This method can work with DBNull and null value. This method is question's answer
于 2019-11-04T12:25:33.513 に答える
0

DataRow 型で次の拡張メソッドを使用しています。

    public static string ColumnIsNull(this System.Data.DataRow row, string colName, string defaultValue = "")
    {
        string val = defaultValue;
        if (row.Table.Columns.Contains(colName))
        {
            if (row[colName] != DBNull.Value)
            {
                val = row[colName]?.ToString();
            }
        }
        return val;
    }

利用方法:

MyControl.Text = MyDataTable.Rows[0].ColumnIsNull("MyColumn");
MyOtherControl.Text = MyDataTable.Rows[0].ColumnIsNull("AnotherCol", "Doh! I'm null");

最初に列の存在を確認しています。これは、クエリ結果のいずれにもその列の null 以外の値がない場合、DataTable オブジェクトはその列を提供することさえできないためです。

于 2018-12-20T19:11:07.643 に答える
-10

質問がちょっとばかげているので、これは冗談の半分を意味します。

public static bool IsNull (this System.Object o)
{
   return (o == null);
}

これは拡張メソッドですが、System.Object を拡張するため、使用するすべてのオブジェクトに IsNull() メソッドが含まれるようになりました。

次に、次のようにして、大量のコードを節約できます。

if (foo.IsNull())

スーパーラメの代わりに:

if (foo == null)
于 2008-10-04T05:14:53.917 に答える