c#作为关键字引用分配

时间:2011-04-02 12:54:14

标签: c#

只是想知道我是否有一个如下构造的变量

object a = new CustomClass;
CustomClass b = a as CustomClass;

然后我通过调用b.DoWork

来操纵b

我是否需要将b分配回(a = b)或者我认为它们都引用相同的引用/内存地址

编辑:

感谢您的答案 - 看起来没有必要做任务(a = b)因为两者都指向同一个对象

3 个答案:

答案 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了解更多详情。