C_Sharp 板


LINE

public class bbb { public DateTime? aaa { get; set; } } 请问中间的? 是什麽意思 有类似的可以参考吗? google 关键字会把? 清掉 -- 没有酱汁的料理没有试吃的必要 就如同 没有配音员的角色就只是个软体 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.69.89.12 (台湾)
※ 文章网址: https://webptt.com/cn.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灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP