我只有两个班级:
class A
{
public B b = new B();
public bool flag {get; set;}
}
class B
{
public void foo()
{
//iterates a dataTable with column "someBoolCondition"
// I want to set A's bool to true, after the first record that has 'true' in column
//"someBoolCondition". Thus is thought to avoid bool memebers in each class.
}
}
我的想法,并不像bool的价值类型那么好: 我认为这是一个问题,因为我看到“ReferenceToA.flag = true;”这一行执行但后来我没有看到A的标志变为真(保持为假)。为什么?
class A
{
public bool flag {get; set;}
public B b = new B();
b.ReferenceToA = this;
}
class B
{
public A ReferenceToA {get; set}
public void foo()
{
ReferenceToA.flag = true; //...
}
}
是否有一种优雅的方式来像参考类型的成员那样做? 这是一种矫枉过正,应该采用不同的方式吗?
答案 0 :(得分:0)
与任何参考类型相比,传递bool时你的模式实际上并没有更糟 - 它完全一样。
实际上,引用的大小(通过值传递)是32位或64位。这也是bool
的大小。
答案 1 :(得分:0)
这绝对不是一种矫枉过正。可能还有其他方法来实现您在这里所做的事情,但选择一个或另一个取决于您的项目要求。 对我来说,这绝对没问题。
为简化起见,您可以考虑制作布尔属性static
,这样您就可以直接从B类A.flag
访问它。但是很难说,如果只是阅读你的帖子,这对你来说是非常合适的解决方案。