Lin*_*son 8 c# boxing interface value-type
在C#语言规范v5.0的1.3节中,它说:
接口类型的内容可以是空引用,对实现该接口类型的类类型实例的引用,或者对实现该接口类型的值类型的盒装值的引用
这三个陈述中有两个没有问题.然而,最后一个让我困惑.接口类型如何保存实现该接口类型的值类型的盒装值?我认为值类型无法实现接口类型?或者是说盒装值实现了接口类型?如果是这种情况,盒装值如何实现接口类型?
我在理解所有这些方面遇到了麻烦.
Mar*_*zek 11
值type(struct)可以实现接口.它不能继承另一个struct,但可以实现接口.
结构可以实现接口,但它们不能从另一个结构继承.因此,不能将struct成员声明为protected.
所以当你有一个struct实现IInterface并执行以下操作时:
var value = new MyStruct();
var valueAsInterface = (IInterface)value;
Run Code Online (Sandbox Code Playgroud)
valueAsInterface包含对实现该接口类型的值类型的盒装值的引用.
没有任何东西可以说值类型无法实现接口.
以下代码完全合法:
interface ITest
{
void DoSomething();
}
struct MyTest : ITest
{
public void DoSomething()
{
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |