C 返回結構體為空的解決辦法

2021-08-04 19:32:19 字數 1551 閱讀 8016

引用型別可以使用空引用表示乙個不存在的值,而值型別通常不能表示為空。

例如:string str=null; 是正確的,int i=null; 編譯器就會報錯。

為了使值型別也可為空,就可以使用可空型別,即用可空型別修飾符「?」來表示,表現形式為「t?」

例如:int? 表示可空的整形,datetime? 表示可為空的時間。

t? 其實是system.nullable(泛型結構)的縮寫形式,也就意味著當你用到「t?」時編譯器編譯 時會把「t?」編譯成 system.nullable 的形式。

例如:int? ,編譯後便是 system.nullable 的形式。

(1)函式的返回型別是乙個結構體(如structa),而這個返回值有可能為空。

此時不能直接返回null或者0,否則編譯器會報錯:無法將null或者0隱式轉成結構體structa,因為它不是一種可以為null值的型別。

public struct structa  

public structa getstruct()

else

}

可以用:

public structa? getstruct()  

即在返回型別後面加「?」

原因:加乙個問號表示乙個可空物件,相當於nullable型別。

(2)對返回值進行判斷:

structa? a = getstruct(); 

if (a!=null)

else

例:
public dictionary m_dicgametext = new dictionary();

public

struct tgametext

public tgametext? getgametext(string key)

return

null;

}public

void

setcontext(string key, string context, bool canshow)

}else

}

例如:x ? y : z表示如果表示式 x 為true,則返回 y;如果 x 為false,則返回 z,是省略 if else 的簡單形式。

用於定義可空型別和引用型別的預設值。如果此運算子的左運算元不為null,則此運算子將返回左運算元,否則返回右運算元。

例如:a ?? b當 a 為 null 時則返回 b,a 不為 null 時則返回 a 本身。

空合併運算子為右結合運算子,即操作時從右向左進行組合的。如,a ?? b ?? c的形式按a ?? ( b ?? c )計算。

IE元素內容為空時佔據空間的解決辦法

如果給div元素設定了寬度時,比如width 100 此時div在ie中 ie6,ie7 將佔據物理空間,而在ff中不佔據物理空間 正確理解 為了表述直觀,將樣式直接寫在元素標籤內 此時在ie中到底是什麼在影響著最終的顯示,又是怎麼解析的呢?可能的影響因素 字型大小 font size 字型行高 l...

C 函式多個返回值 解決辦法

程式設計中經常遇到有多個返回值的情況,下面提供了幾種方法供參考。方法一 getperson out var name,out var age,out var male debug.log name age male public void getperson out string name,out ...

本地使用者和組 使用者列表為空解決辦法

系統的本地使用者和組使用者列表為空,顯示 無法顯示該組的所有使用者 組列表可以正常訪問,但對使用者操作只能在dos下使用net user net localgroup 等命令。針對此情況,一般是機器在建立使用者賬號,刪除賬號後在登錄檔遺留的註冊項影響問題,登錄檔路徑為 hkey local mach...