【发布时间】:2017-01-20 10:12:37
【问题描述】:
如果我在 C# 中转换一个对象,它是否仍然引用原始对象转换?
例如,如果我创建一个方法来更改对象,然后根据调用的特定实现强制转换该对象,是否会保留原始对象?
public bool CallChangeString()
{
String str = "hello";
ChangeObject(str);
return String.Equals("HELLO", str);
}
public void ChangeObject(Object obj)
{
String str = obj as String;
str.ToUpper(); // pretend for the sake of this that this changes str to upper case
}
在这种情况下,String.Equals 会返回 true 还是 false?
是否存在强制转换会导致新对象不保留其引用的情况?
【问题讨论】:
-
测试时返回什么?上面的代码有什么问题吗?
-
@HenkHolterman
Equals返回一个布尔值。 -
@HenkHolterman,那么当我说“String.Equals 会返回 true 还是 false”时,你认为我的意思是什么?
-
为什么不直接测试一下?
-
@Shub-Nullgurath 不,它的目的是教人们如何避免问题或如何处理问题,而不是检查是否有。
标签: c#