[英]while debugging in visual studio, what does double?[] mean
我正在Visual Studio中調試c#代碼,並且有如下變量:
double?[] x;
string[] y;
在本地窗口中,我看到x
為{double?[0]}
而y
為{string[0]}
。 這意味着什么?
double?[]
是double?
的數組double?
對象,這只是C#的System.Nullable<System.Double>[]
的簡寫。 string[]
是字符串數組,與System.String[]
相同。 進一步閱讀
double關鍵字表示存儲64位浮點值的簡單類型。
像int?
這樣的任何類型之后的問號int?
還是double?
表明此類型可為空。 方括號表明這是一個數組。 花括號內的數字表示數組中元素的數量。
我會盡量保持簡單。
以[]
結尾的任何內容都意味着它是該對象類型的數組。
int[]
是int
的數組,
string[]
是string
的數組,
float?[]
是float?
數組float?
,
MyOwnClass[]
是一個數組MyOwnClass
等等...
數組是對象的集合。 因此,如果您說int[] a = new int[5]
,那么您正在創建一個可以容納5個int
值的int
數組。 因此,如果要具有三個int
,而不是聲明int a
, int b
, int c
,則只需創建int[] myArray = new int[3]
。 想象一下,創建所有這些int的方法,不只是針對三個元素,而是針對一千個元素。 這是不實際的,所以我們有數組。
在C#中,存在可以容納數值的數據類型( int
, float
, long
等),並且有些類沒有數值,但是具有更復雜的值的集合。 無法直接訪問類,當您在C#中訪問類(例如, myClass.myValue
)時, myClass
實際上只是對該類實例(具有myValue
和所有其他值附加到該實例)的引用。 換句話說, myClass
對象指向計算機RAM上的“地址”。 在該“地址”處,將找到您的實際數據(帶有myValue
等)。 但是,如果myClass
沒有指向任何地址怎么辦? 然后,它是一個空指針,這意味着myClass
指向“地址零”,換句話說, myClass
指向無效的,不存在的對象。
整數可以具有任何整數值,例如1、0,-1500、50000等。如果您希望能夠將int
(或任何其他原始數據類型)設置為null(如類示例),該怎么辦? 你放一個?
在類型之后,而不是int
,而是鍵入int?
。 這是一種特殊的“可為空”類型,您也可以像設置類一樣將其設置為null。
因此,關於您的原始問題:
如果我們現在知道int
是一個簡單的整數,
int[]
是整數的集合,
int?
是一個整數,也可以具有特殊的“空”值。
然后double?[] x
意思是“特殊的,可為null的double
s的集合(它是類似int
的原始數據類型)”。 為什么? 分成幾部分:您首先鍵入double
,告訴我們正在處理名為double
的數據類型,然后添加了?
,意味着我們正在處理的double
類型具有這種特殊的能力,使其具有為null的特殊能力,然后您添加了[]
,這意味着我們正在處理“ []
之前的內容”的集合,在這種情況下, double?
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.