C# 中的类型转换是否发生在这里?
我有一个关于类型转换的基本问题。
class A { }
class B : A { }
B b = new B();
A a = (A)b;
上面的代码中是否会发生类型转换?
interface IA
{
void process();
}
class B : IA
{
#region IA Members
void IA.process()
{
throw new NotImplementedException();
}
#endregion
public void process() { }
}
B b = new B();
b.process();
((IA)b).process();
上面的代码中是否会发生类型转换?
I have a basic question regarding type casting.
class A { }
class B : A { }
B b = new B();
A a = (A)b;
In the above code whether type casting will occur?
interface IA
{
void process();
}
class B : IA
{
#region IA Members
void IA.process()
{
throw new NotImplementedException();
}
#endregion
public void process() { }
}
B b = new B();
b.process();
((IA)b).process();
In the above code whether type casting will occur?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在这两种情况下,您都使用像 (A)b 那样的显式强制转换。所以这两种情况都会发生类型转换。如果删除显式转换,则在第一种情况下将发生隐式转换,而第二种情况将不会进行任何转换,因为它与 b.process() 相同。
You are using explicit cast like (A)b in both cases. So type cast will happen in both cases. If explicit casting is removed, then in first case implicit cast will occur and second case will not have any casting as it is same as b.process().
我建议您创建一个类转换器,将 A 类转换为 B 类。
I recommend to you create a class converter to cast class A to class B.