最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# 可空類型的實(shí)現(xiàn)示例

 更新時(shí)間:2024年11月29日 10:48:26   作者:呆呆小雅  
本文主要介紹了C#中的可空類型,包含單問號(hào)(?)和雙問號(hào)(??),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

可空類型(Nullable)是一個(gè)極具實(shí)用性的特性,它為我們處理那些可能出現(xiàn)未賦值情況的數(shù)據(jù)提供了便捷且合理的方式。而其中,單問號(hào)(?)和雙問號(hào)(??)這兩個(gè)符號(hào)在可空類型的運(yùn)用中扮演著關(guān)鍵角色,各自有著獨(dú)特且重要的功能

一、單問號(hào)(?)

在 C# 中,像 int、double、bool 等這些基礎(chǔ)的數(shù)據(jù)類型,按照常規(guī)情況是無法直接賦值為 null 的。然而,實(shí)際編程場(chǎng)景中,尤其是在處理諸如數(shù)據(jù)庫(kù)等外部數(shù)據(jù)源時(shí),常常會(huì)遇到數(shù)值類型或者布爾型的元素可能未被賦值的情況。這時(shí),單問號(hào)(?)就派上用場(chǎng)了,它用于將這些原本不能賦值為 null 的數(shù)據(jù)類型轉(zhuǎn)變?yōu)榭煽疹愋停∟ullable 類型),意味著這個(gè)數(shù)據(jù)類型被賦予了可以存儲(chǔ) null 值的能力。
例如,以下兩種寫法是等價(jià)的:

int? i = 3;
Nullable<int> i = new Nullable<int>(3);

通過使用單問號(hào)(?),我們定義了一個(gè)可空的整型變量 i,它既可以像普通整型變量那樣存儲(chǔ) int 類型正常范圍內(nèi)的值(例如 3),也可以存儲(chǔ) null 值。對(duì)比普通的整型變量聲明:

int i; // 默認(rèn)值 0
int? ii; // 默認(rèn)值 null

可以清晰地看到,普通整型變量在未初始化賦值時(shí),會(huì)有一個(gè)默認(rèn)的初始值 0,而可空整型變量 ii 的默認(rèn)值則是 null,這體現(xiàn)了可空類型在表示未賦值情況方面的獨(dú)特優(yōu)勢(shì)。

以 Nullable 為例,它讀作 “可空的 Int32”,其取值范圍非常靈活,不僅可以被賦值為 -2,147,483,648 到 2,147,483,647 之間的任意值(這是 Int32 類型本身正常的取值范圍),還可以被賦值為 null 值。類似地,對(duì)于 Nullable 變量而言,它打破了常規(guī)布爾型只能取 true 或 false 的限制,額外增加了可以賦值為 null 的能力,這在很多場(chǎng)景下都非常有用。

比如在處理數(shù)據(jù)庫(kù)相關(guān)操作時(shí),數(shù)據(jù)庫(kù)中的布爾型字段可能會(huì)出現(xiàn)三種狀態(tài):存儲(chǔ)值 true、存儲(chǔ)值 false,或者該字段未定義(也就是對(duì)應(yīng)程序中的 null 值)??煽疹愋途湍芡昝赖剡m配這種情況,讓我們?cè)诔绦蛑锌梢詼?zhǔn)確地映射和處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)狀態(tài),避免因數(shù)據(jù)可能未賦值而引發(fā)的錯(cuò)誤或不合理的默認(rèn)賦值情況。

聲明一個(gè)可空類型(Nullable)有著特定的語法規(guī)范,其形式如下:

<data_type>? <variable_name> = null;

以下是一個(gè)展示可空數(shù)據(jù)類型用法的實(shí)例:

using System;
namespace CalculatorApplication
{
    class NullablesAtShow
    {
        static void Main(string[] args)
        {
            // 聲明不同的可空類型變量,并進(jìn)行不同的賦值操作
            int? num1 = null;
            int? num2 = 45;
            double? num3 = new double?();
            double? num4 = 3.14157;
            bool? boolval = new bool?();

            // 顯示值
            Console.WriteLine("顯示可空類型的值: {0}, {1}, {2}, {3}",
                              num1, num2, num3, num4);
            Console.WriteLine("一個(gè)可空的布爾值: {0}", boolval);
            Console.ReadLine();

        }
    }
}

當(dāng)上述代碼被編譯和執(zhí)行時(shí),會(huì)輸出如下結(jié)果:

顯示可空類型的值:, 45, , 3.14157
一個(gè)可空的布爾值:

這里可以看到,對(duì)于賦值為 null 的可空變量(如 num1 和 num3),在輸出時(shí)會(huì)顯示相應(yīng)的空白占位(具體輸出格式可能因不同環(huán)境稍有差異,但能體現(xiàn)出其值為 null 的特點(diǎn)),而賦了具體值的可空變量(如 num2 和 num4)則正常輸出對(duì)應(yīng)的值,可空布爾型變量 boolval 由于初始化為 null,輸出時(shí)也相應(yīng)地體現(xiàn)出未賦值的狀態(tài)。

二、雙問號(hào)(??)

雙問號(hào)(??)被稱為 Null 合并運(yùn)算符,它主要用于定義可空類型和引用類型的默認(rèn)值,為類型轉(zhuǎn)換設(shè)定了一個(gè)預(yù)設(shè)值,以防可空類型的值為 null。

Null 合并運(yùn)算符的特性:如果第一個(gè)操作數(shù)的值為 null,那么運(yùn)算符就返回第二個(gè)操作數(shù)的值;反之,如果第一個(gè)操作數(shù)不為 null,則返回第一個(gè)操作數(shù)的值。它還能夠把操作數(shù)類型隱式轉(zhuǎn)換為另一個(gè)可空(或不可空)的值類型的操作數(shù)的類型,確保整個(gè)運(yùn)算在類型匹配方面的合理性。

以下是一個(gè)演示 Null 合并運(yùn)算符用法的實(shí)例:

using System;
namespace CalculatorApplication
{
    class NullablesAtShow
    {
        static void Main(string[] args)
        {
            double? num1 = null;
            double? num2 = 3.14157;
            double num3;

            // 使用 Null 合并運(yùn)算符進(jìn)行賦值判斷
            num3 = num1?? 5.34;      // 因?yàn)?num1 此時(shí)為 null 值,所以返回 5.34
            Console.WriteLine("num3 的值: {0}", num3);

            num3 = num2?? 5.34;
            Console.WriteLine("num3 的值: {0}", num3);

            Console.ReadLine();

        }
    }
}

當(dāng)這段代碼被編譯和執(zhí)行后,會(huì)產(chǎn)生如下結(jié)果:

num3 的值: 5.34
num3 的值: 3.14157

在上述代碼中,第一次對(duì) num3 賦值時(shí),由于 num1 的值為 null,根據(jù) Null 合并運(yùn)算符(??)的規(guī)則,就會(huì)返回第二個(gè)操作數(shù) 5.34 作為 num3 的值;而第二次賦值時(shí),num2 的值不為 null(其值為 3.14157),所以直接返回 num2 的值給 num3。

這種機(jī)制在實(shí)際編程中有諸多應(yīng)用場(chǎng)景,比如在從配置文件或者用戶輸入獲取數(shù)據(jù)時(shí),數(shù)據(jù)有可能是缺失(對(duì)應(yīng) null 值)的情況。我們可以利用 Null 合并運(yùn)算符為這些可能為 null 的可空類型變量設(shè)置一個(gè)合理的默認(rèn)值,確保后續(xù)程序在使用這些數(shù)據(jù)時(shí)能夠有一個(gè)明確的、符合預(yù)期的值可用,避免因 null 值引發(fā)的諸如空指針異常等各種錯(cuò)誤。

到此這篇關(guān)于C# 可空類型的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C# 可空類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過C#實(shí)現(xiàn)PowerPoint轉(zhuǎn)HTML格式的完整指南

    通過C#實(shí)現(xiàn)PowerPoint轉(zhuǎn)HTML格式的完整指南

    這篇文章主要介紹了FreeSpire.Presentationfor.NET,一個(gè)免費(fèi)的PowerPoint處理類庫(kù),支持讀取、編輯PPT文件,并將其轉(zhuǎn)換為HTML、PDF等格式,詳細(xì)解釋了安裝方法,并提供C#代碼示例,包括單文件轉(zhuǎn)換、指定幻燈片轉(zhuǎn)換和批量轉(zhuǎn)換,需要的朋友可以參考下
    2026-04-04
  • C#中窗體重復(fù)創(chuàng)建問題的解決方法

    C#中窗體重復(fù)創(chuàng)建問題的解決方法

    在C#Windows窗體應(yīng)用中,我們經(jīng)常遇到這樣的問題,當(dāng)我們觸發(fā)一個(gè)窗口命令時(shí),我連續(xù)點(diǎn)擊其中一個(gè)命令,會(huì)出現(xiàn)多個(gè)同樣的窗口,但我們是不管點(diǎn)擊多少次,都只出現(xiàn)一次,所以本文給大家介紹了C#中窗體重復(fù)創(chuàng)建問題的解決方法,需要的朋友可以參考下
    2024-04-04
  • C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹

    C#:foreach與yield語句的介紹,需要的朋友可以參考一下
    2013-03-03
  • C#中的兩種debug方法介紹

    C#中的兩種debug方法介紹

    這篇文章主要介紹了C#中的兩種debug方法介紹,本文講解了代碼用 #if DEBUG 包裹、利用宏定義兩種方法,需要的朋友可以參考下
    2015-02-02
  • C# Ini文件操作實(shí)例

    C# Ini文件操作實(shí)例

    這篇文章主要介紹了C# Ini文件操作實(shí)例,需要的朋友可以參考下
    2014-02-02
  • 基于C#方法重載的總結(jié)詳解

    基于C#方法重載的總結(jié)詳解

    本篇文章是對(duì)C#中方法重載進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#10的13個(gè)特性

    C#10的13個(gè)特性

    本文詳細(xì)講解了C#10的13個(gè)特性,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • C#生成指定范圍內(nèi)的不重復(fù)隨機(jī)數(shù)

    C#生成指定范圍內(nèi)的不重復(fù)隨機(jī)數(shù)

    對(duì)于隨機(jī)數(shù),大家都知道,計(jì)算機(jī)不 可能產(chǎn)生完全隨機(jī)的數(shù)字,所謂的隨機(jī)數(shù)發(fā)生器都是通過一定的算法對(duì)事先選定的隨機(jī)種子做復(fù)雜的運(yùn)算,用產(chǎn)生的結(jié)果來近似的模擬完全隨機(jī)數(shù),這種隨機(jī)數(shù)被稱 作偽隨機(jī)數(shù)。偽隨機(jī)數(shù)是以相同的概率從一組有限的數(shù)字中選取的。
    2015-05-05
  • C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    本文主要介紹了面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài),提供了簡(jiǎn)單的示例供大家參考和理解。
    2016-03-03
  • C#如何將DataTable導(dǎo)出到Excel解決方案

    C#如何將DataTable導(dǎo)出到Excel解決方案

    由于公司項(xiàng)目中需要將系統(tǒng)內(nèi)用戶操作的所有日志進(jìn)行轉(zhuǎn)存?zhèn)浞荩紤]到以后可能還需要還原,所以最后決定將日志數(shù)據(jù)備份到Excel中
    2012-11-11

最新評(píng)論

通江县| 霍林郭勒市| 闽侯县| 利川市| 肇庆市| 民权县| 华容县| 江都市| 营口市| 沙湾县| 太谷县| 云和县| 探索| 赞皇县| 牡丹江市| 雅江县| 张掖市| 石景山区| 蕉岭县| 娄底市| 剑川县| 巴东县| 民和| 蒲江县| 巍山| 卫辉市| 白城市| 始兴县| 岳阳市| 西乌珠穆沁旗| 广饶县| 元氏县| 阿鲁科尔沁旗| 大埔区| 威远县| 景德镇市| 临泽县| 孟村| 阳春市| 太仆寺旗| 于田县|