C_Sharp 板


LINE

public class bbb { public DateTime? aaa { get; set; } } 請問中間的? 是什麼意思 有類似的可以參考嗎? google 關鍵字會把? 清掉 -- 沒有醬汁的料理沒有試吃的必要 就如同 沒有配音員的角色就只是個軟體 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.69.89.12 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1668475820.A.5C8.html
1F:→ testPtt: 可空 11/15 09:36
2F:→ nicetw20xx: Nullable value types 11/15 13:49
3F:推 MickeyHowl: 可為null 11/17 19:10
4F:→ testPtt: 我想問為什麼一開始不設計成預設null就好 有沒有人解答 11/17 19:26
5F:推 lonniekao: 不同狀態都會有使用情境,例如不可為null,在資料轉進 11/17 22:20
6F:→ lonniekao: model就可知道,是否有問題,不需要等到執行運算才處 11/17 22:20
7F:→ lonniekao: 理。 11/17 22:20
8F:→ testPtt: 我覺得nullable會比較常用 打?的頻率太高覺得這設計不好 11/18 11:36
9F:推 j835111: DateTime類型default不能為null,多個問號把他轉成nullab 11/18 16:52
10F:→ j835111: le類型 11/18 16:52
11F:推 lonniekao: 不是你覺得就是對的,有沒想過會不會是你見過的太少? 11/18 22:47
12F:→ testPtt: 可能是我大部分的應用都跟資料庫有關 都需要nullable 11/18 23:28
13F:→ testPtt: 大部分的情況下我宣告物件都會給null 直接new的不多 11/18 23:33
14F:→ testPtt: 所以我會希望type預設nullable 用別的方式表示not null 11/18 23:36
15F:→ ssccg: 因為value type不是reference type,本來就沒有所謂null 11/21 01:59
16F:→ ssccg: value type就像C/C++的struct,值是直接存在stack上的,而 11/21 01:59
17F:→ ssccg: null代表的是reference type或像C/C++的pointer沒有指向物 11/21 02:01
18F:→ ssccg: 件 11/21 02:02
19F:→ ssccg: value type宣告時就佔了一塊記憶位置,裡面不管值是多少一 11/21 02:03
20F:→ ssccg: 定會有值,而不是指向什麼物件,所以不會有沒指向的情況 11/21 02:04
21F:→ ssccg: Nullable不只是個標記,而是一層包裝,把value type轉成了 11/21 02:05
22F:→ ssccg: reference type,把原本存在stack上的值包成一個物件丟到 11/21 02:05
23F:→ ssccg: heap上,取值不再是直接讀而要多解一層reference 11/21 02:08
24F:→ ssccg: 在Java,只有primitive type是value type,其他所有Class都 11/21 02:09
25F:→ ssccg: 是reference type,而C#支援struct這種較複雜的value type 11/21 02:10
26F:→ ssccg: 然後C#的日期時間類別都是struct 11/21 02:16
27F:→ ssccg: 為什麼預設是value type,因為value type就是省記憶體也快 11/21 02:24
28F:→ ssccg: (在stack上是指method local variable,其他情況看scope) 11/21 02:31
29F:推 lonniekao: ssccg,很讚的解說。 11/21 06:58
30F:→ testPtt: 那麻煩再解說一下string vs string? XD 11/21 19:08
31F:→ testPtt: 好像任何class都可以加? 11/21 19:11
32F:推 sating00: https://is.gd/x0p6AA 11/21 19:28
33F:→ sating00: 官方文件看來,nullable 的類別會有一些限制。前面推文 11/21 19:28
34F:→ sating00: 說的 string?,也許在特定情況可能派得上用場 11/21 19:28
35F:→ sating00: 雖然個人真的不太常使用到,但是csharp能夠有這種方法 11/21 19:37
36F:→ sating00: 總是有方便的地方,有總比沒有好 11/21 19:37
37F:→ sating00: 另外前面版友提到的,為什麼不要全部都是nullable, 11/21 19:42
38F:→ sating00: ssccg 的解釋可以好好參考,基本的型態在資料賦值的時 11/21 19:42
39F:→ sating00: 候是拷貝,nullable就變成參考(可能理解有錯,再請前輩 11/21 19:42
40F:→ sating00: 訂正),在這種情形下會造成寫程式上的麻煩,讓基本型態 11/21 19:42
41F:→ sating00: 就維持基本型態,真的需要使用的時候才考慮nullable 11/21 19:42
42F:→ ssccg: reference type的nullable就完全是同一個類型,只是可以啟 11/21 22:59
43F:→ ssccg: 用compiler檢查,在把nullable值設給非nullable變數時警告 11/21 23:01
44F:→ ssccg: 避免寫出執行期才發現NullPointerException的程式 11/21 23:05
45F:→ ssccg: 有些語言預設就是這種模式如Kotlin和Swift 11/21 23:07
46F:推 CloudyWing: DateTime?是Nullable<DateTime>的簡寫,至於ref type 01/10 19:17
47F:→ CloudyWing: 和value type差異上面有提了,順便一提Nullable雖然 01/10 19:17
48F:→ CloudyWing: 可以設為null,但它仍然是struct,只是編譯器有動手 01/10 19:17
49F:→ CloudyWing: 腳讓他看起來有支援null 01/10 19:17
50F:→ CloudyWing: C#的struct是用於在一些單純表達值的型別上,不希望 01/10 19:22
51F:→ CloudyWing: 更動到一個變數的內容,結果全部相同的ref的變數值都 01/10 19:22
52F:→ CloudyWing: 被改了,像Java的Date是ref type,就被人提過是失敗 01/10 19:22
53F:→ CloudyWing: 的設計 01/10 19:22
54F:→ CloudyWing: struct不同的變數是獨立,而非指向同個ref 01/10 19:23
55F:→ CloudyWing: Null的存在一直有爭議,很多錯誤都是源自於null值, 01/10 19:28
56F:→ CloudyWing: 但這又是有歷史包袱的東西,所以C#就提供ref type Nu 01/10 19:28
57F:→ CloudyWing: llable的檢查,它可以在csproj設定是否要啟用,啟用 01/10 19:28
58F:→ CloudyWing: 的話,沒有?表示你認為他一定不為null,有?則是有可 01/10 19:28
59F:→ CloudyWing: 能是null,另外還有一些Attribute可以表示可能是Null 01/10 19:28
60F:→ CloudyWing: ,但是這邊不該是Null,或是結尾加!表示這地方一定不 01/10 19:28
61F:→ CloudyWing: 為null 01/10 19:28
62F:推 CloudyWing: 然後非Oracle的資料庫有一派的設計是非必要,否則欄 01/10 19:45
63F:→ CloudyWing: 位都設NOT NULL,字串型別都用空字串取代Null,列舉 01/10 19:45
64F:→ CloudyWing: 類的資料都會定義一個值來做default值,只有例如審核 01/10 19:45
65F:→ CloudyWing: 時間這種沒有審核就不會有值的才設可Null,極端一點 01/10 19:45
66F:→ CloudyWing: 的就給default 1900/01/01 01/10 19:45







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP