2 qq 26534747 qq_26534747 于 2015.05.26 09:56 提问

当引用类型不为null时属性的value会为null吗?

当一个类型为null时,value肯定是为null的,那么当他不为null时那么属性.value有没有机会可以为null呢?

5个回答

caozhy
caozhy   Ds   Rxr 2015.05.26 10:20
已采纳

C#更没有value了
你说的是Nullable<T>泛型么?那么取决于hasvalue的属性。
当然,你可以故意构造一个不符合这个原则的类
class AlwaysNull
{
public object value { get { return null; } }
}
那么它肯定都是返回null

caozhy
caozhy 回复等待大神粗线: C#不是C++,在哪里分配是CLR自动管理的。整个托管堆都不用你操心。
2 年多之前 回复
qq_26534747
qq_26534747 回复caozhy: 或者说给实例分配的空间分在哪了?
2 年多之前 回复
qq_26534747
qq_26534747 回复caozhy: 有点懂了,那么为什么实例分配了空间他的value不分配啊
2 年多之前 回复
caozhy
caozhy 自动属性,如果是引用类型,并且你没有初始化过,那么它就是null
2 年多之前 回复
caozhy
caozhy 回复等待大神粗线: 不一定
2 年多之前 回复
qq_26534747
qq_26534747 按你这个类当他不为null时他的属性就是自动属性那么value不会为null吧?
2 年多之前 回复
caozhy
caozhy 回复等待大神粗线: ?
2 年多之前 回复
qq_26534747
qq_26534747 class AlwaysNull
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.26 10:07

value属性不是java语言的一部分。要看具体类型。

qq_26534747
qq_26534747 C#的
2 年多之前 回复
wgw335363240
wgw335363240   2015.05.26 10:29

对象不为null,则其value肯定不为null;如果对象不为null,其的某个属性可能是为null的。因为对象可能有多个属性,对象不为null,不表示其属性就不为null。

qq_26534747
qq_26534747 value在哪获取的值啊?
2 年多之前 回复
qq_26534747
qq_26534747 对象不为null,其value没有进行初始化,为什么会不为空啊?
2 年多之前 回复
wgw335363240
wgw335363240   2015.05.26 10:34

对象不为null,则其value肯定不为null;如果对象不为null,其的某个属性可能是为null的。因为对象可能有多个属性,对象不为null,不表示其属性就不为null。

caozhy
caozhy   Ds   Rxr 2015.05.26 10:39

好奇怪的问题,我还想问你属性你打算如何自动初始化
你可以定义一个抽象类吧?
abstract class AB { ... }
你可以定义一个封闭了构造函数的类吧
class NC
{
private NC() { }
}
你可以定义包含了很多重载形式的类型吧
...
那好
class A
{
public AB value { get; set; }
public NC value1 { get; set; }
}
请问你让编译器怎么自动帮你初始化?

qq_26534747
qq_26534747 谢谢你耐心的回答!我懂了
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片