只是想知道我是否有一个如下构造的变量
object a = new CustomClass;
CustomClass b = a as CustomClass;
然后我通过调用b.DoWork
来操纵b我是否需要将b分配回(a = b)或者我认为它们都引用相同的引用/内存地址
编辑:
感谢您的答案 - 看起来没有必要做任务(a = b)因为两者都指向同一个对象
答案 0 :(得分:2)
这不会编译,除非您可以将CustomClass
分配给字符串。除非存在转化,否则您无法将as
的返回类型指定为string
类型。
在MSDN中,as
关键字相当于以下内容(除expression
仅评估一次外):
expression is type ? (type)expression : (type)null
因此,它返回类型的对象 - 在本例中为CustomClass
。除非您可以将CustomClass
分配给string
,否则无法编译。
答案 1 :(得分:2)
它们是对同一个对象的引用(我假设通过命名你的类CustomClass,你实际上是指它是一个类(引用类型),而不是一个struct,因为如果它是一个结构,你就不能使用{ {1}}运营商投下它)。另外,我认为你打算写:
object a = new CustomClass(); CustomClass b = a as CustomClass;
在您的代码中(注意as
,您无法将其强制转换为字符串)。
答案 2 :(得分:1)
简短的回答是,它取决于CustomClass是作为引用类型还是值类型实现的。
请查看this reference了解更多详情。