C# ?和??使用講解

来源:https://www.cnblogs.com/zwwhnly/archive/2018/10/10/9767968.html
-Advertisement-
Play Games

場景1:使用?定義可空類型 眾所周知,C#中的值類型是不可以為null的,如果必須為null,則需要將變數定義為可空類型,如下所示: 場景2:使用?檢查null值 一般我們寫代碼時,為了避免代碼出現空異常System.NullReferenceException,都會寫很多的判斷語句 在C#的新語法 ...


場景1:使用?定義可空類型

眾所周知,C#中的值類型是不可以為null的,如果必須為null,則需要將變數定義為可空類型,如下所示:

int? age = null;

場景2:使用?檢查null值

一般我們寫代碼時,為了避免代碼出現空異常System.NullReferenceException,都會寫很多的判斷語句

Address address = null;
if (address != null)
{
   Console.WriteLine(address.PostCode);
}

Console.ReadLine();

在C#的新語法中,我們可以通過?來檢查null值,這樣可以減少很多不必要的判斷

Address address = null;
var postCode = address?.PostCode;
Console.WriteLine(postCode);

Console.ReadLine();

場景3:使用??設置預設值

在寫代碼過程中,經常會碰到當變數為null值設置預設值的情況,原來的寫法可能是這樣的:

int? age = null;
if (!age.HasValue)
{
   age = 18;
}

Console.WriteLine(age); // 輸出18

Console.ReadLine();

其實可以通過??來設置預設值,如果變數值為null,取??右邊的值,如果不為null,取變數的值

int? age = null;

Console.WriteLine(age ?? 18); // 輸出18

age = 20;

Console.WriteLine(age ?? 18); // 輸出20

Console.ReadLine();

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JVM學習筆記1:Java虛擬機記憶體模型 學習JVM,Java虛擬機對理解Java程式執行過程和Java程式性能調優具有很大幫助。本系列博客旨在由淺到深學習並理解JVM。參考閱讀:《深入理解Java虛擬機 JVM高級特性和最佳實踐》。這個書寫的非常好,推薦有條件的讀者買一本來閱讀,網上也有電子版的。 ...
  • 在JDK1.8後,對HashMap源碼進行了更改,引入了紅黑樹。在這之前,HashMap實際上就是就是數組+鏈表的結構,由於HashMap是一張哈希表,其會產生哈希衝突,為瞭解決哈希衝突,HashMap採用了開鏈法,即對於用對象hashCode值計算哈希表數組下表時,當出現相同情況時,會在相同的地方 ...
  • 二叉樹中和為某一值的路徑: 輸入一顆二叉樹的跟節點和一個整數,列印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。(註意: 在返回值的list中,數組長度大的數組靠前) 思路: 1.二叉樹的前序遍歷,中左右順序 2.把目標值target傳... ...
  • ORM-SqlRepoEx 是 .Net平臺下相容.NET Standard 2.0,一個實現以Lambda表達式轉轉換標準SQL語句,使用強類型操作數據的輕量級ORM工具,在減少魔法字串同時,通過靈活的Lambda表達式組合,實現業務數據查詢的多樣性。 ...
  • 不知不覺orleans就發佈到2.1版本的,但是說也奇怪orleans越是完善我發現園子相關的博客就越少,大概是大佬都在美滋滋用在生產環境,不屑於玩demo了吧。 但是小弟不才還是只會玩demo,所以只能簡單的介紹介紹2.1版本的新玩法了。 1.新建一個asp.net core的webapi項目,然 ...
  • 原文: "UWP Button添加圓角陰影(三)" Composition DropShadow是CompositionAPI中的東西,使用Storyboard設置某個屬性,就是頻繁的觸發put_xxx()方法,效率遠遠不如使用CompositionAnimation。 Composition對象的 ...
  • 原文: "UWP Button添加圓角陰影(二)" 陰影 對於陰影呢,WindowsCommunityToolkit中已經有封裝好的DropShadowPanel啦,只要引用 這個Nuget包就可以使用啦。 直接把陰影套在咱們的圓角Button外面呢,會出現圓角的Button映出直角的陰影的醜陋狀況 ...
  • 原文: "UWP Button添加圓角陰影(一)" 眾所周知,17763之前的UWP控制項,大部分是沒有圓角屬性的;而陰影也只有17763中的ThemeShadow可以直接在xaml中使用,之前的版本只能用DropShadow,用法極其彆扭。 本文就給出一個雖然很彆扭,但是效果還不錯的,比較通用的圓角 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...