簡體   English   中英

可為對象的可空類型

[英]nullable types to object

使用dotnet 2.0。 可以改進以下代碼的樣式嗎?

    private object GetObj_Version1(int? num)
    {
        return num ?? (object)DBNull.Value;
    }

演員對我來說有點混亂。 下面的Version2避免了強制類型轉換,但是它的作用很長:

    private object GetObj_Version2(int? num)
    {
        object numObj;
        if (num.HasValue)
            numObj = num.Value;
        else
            numObj = DBNull.Value;

        return numObj;
    }

您能想到一種既簡短又避免強制轉換的替代方案嗎? TIA。

在這種情況下,強制轉換在運行時不執行任何操作-純粹是針對編譯器的。 如果您真的討厭它,也許:

    static readonly object NullObject = DBNull.Value;
    private object GetObj_Version1(int? num)
    {
        return num ?? NullObject;
    }

但是我自己留下。 順便說一句-因為無論如何都要將其裝箱,您可以省去重載,而只使用object -那么您甚至不需要static字段:

    private object GetObj_Version1(object value)
    {
        return value ?? DBNull.Value;
    }

如果要將值插入數據庫,則可以直接將可空類型作為過程的參數傳遞。

param.Add("@Param1", nullableParam);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM