首先,定义一个名为AAA的类:
class AAA
{
public int a = 1;
}
然后,定义另一个类BBB,它包含一个类型为AAA的字段(该字段的属性a,并且该字段已被初始化,即不为空):
class BBB
{
private AAA a = new AAA();
public AAA A { set; get; }
public bool isNull()
{
return a == null;
}
}
接下来,我在外面写了下面的代码:
BBB b = new BBB();
var flag = b.isNull(); // the value is FALSE
b.A.a = 3; // NullPointerException
如上所述,b.s isnull()返回FALSE。所以,字段a不为空。然而,第三行(b.A.a = 3)抛出NullPointerException。
如果属性A可以获得字段A的指针(c#没有指针,我的意思是指向实际对象A的地址引用),则不应该抛出此异常。
我的问题是是否有可能在c#中使用属性获得对象。
因为您初始化的是a
而不是A
。b.A
为null
但是我不确定你想通过用相同的类型声明a
和A
来实现什么。
我认为你不需要在你的情况下申报A
。
请为类提供一个有意义的名称,而不是A
。B
. .
按照我的评论,这里是修复。记住你的问题不清楚,所以这是我假设你想要的。类BBB{
public BBB()
{
A = new AAA();
}
public AAA A { set; get; }
public bool isNull()
{
return A == null;} //will always return false
}