为什么我需要在C#显式实现中将'this'转换为接口类型?

哈博特

我有一个界面:

public interface Profile
{
    string Name { get; }
    string Alias { get; set; }
}

实现的所有对象Profile都有NameAlias,但有些限制Alias,使其始终与相同Name施加此限制的用户可以这样实现Alias

string Profile.Alias
{
    get
    {
        return ((Profile)this).Name;
    }
    set { }
}

由于this在显式接口实现的上下文中只能是类型的,Profile并且我们知道它是通过Profile接口访问的,而不是通过包含类或它实现的任何其他接口的接口访问的,为什么需要强制转换?

使用return this.Name;了此错误,吸气实施效果:

Type `ConcreteProfile' does not contain a definition for `Name' and no extension method `Name' of type `ConcreteProfile' could be found (are you missing a using directive or an assembly reference?)
雅库布·马萨德(Yacoub Massad)

因为this在显式接口的上下文中,实现只能是类型Profile

这不是真的。您正在Profile.Alias内部实现ConcreteProfile在这种情况下,this指的是ConcreteProfile实例,可用于访问ConcreteProfile实例的任何成员

例如,ConcreteProfile该类可以包含另一个Name属性not Profile.Name在这种情况下,this.Name将引用该属性。

由于要访问Profile.Name,因此必须强制转换thisProfile

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将具体的实现类型转换为通用接口类型

来自分类Dev

无法将实例类型转换为实例实现接口的接口类型

来自分类Dev

关闭无法隐式转换为通用接口类型的成员的通用接口的类的实例

来自分类Dev

为什么我不能将对象转换为其接口类型?

来自分类Dev

使用C#和反射将接口类型转换为具体类型

来自分类Dev

为什么在Dart中有条件地强制转换为接口类型失败?

来自分类Dev

为什么必须将类明确转换为其接口类型?

来自分类Dev

在Linq表达式中将对象转换为通用接口类型

来自分类Dev

泛型类型的隐式转换失败,接口类型

来自分类Dev

使用基类进行C#接口类型转换

来自分类Dev

ASP.NET MVC在操作过滤器中将视图模型转换为通用接口类型

来自分类Dev

为什么拆箱需要在C#中进行显式转换?

来自分类Dev

如何在vb.net中将类型为“ System .__ ComObject”的COM对象转换为接口类型为“ ESRI.ArcGIS.Carto.FeatureLayer”?

来自分类Dev

为什么我必须显式转换为约束类型?

来自分类Dev

Typescript接口类型值转换为联合类型

来自分类Dev

Typescript将未知类型转换为接口类型

来自分类Dev

我可以在接口中使用接口类型吗?

来自分类Dev

将使用URLClassLoader创建的对象转换为接口类型

来自分类Dev

在VBA中强制转换为接口类型

来自分类Dev

Swift:从接口类型数组转换为对象数组崩溃

来自分类Dev

如何确定类型是否实现特定的通用接口类型

来自分类Dev

为什么将StreamReader对象类型转换为IDisposable接口?

来自分类Dev

我应该如何确定查询返回到 GraphQL 接口类型的显式类型?

来自分类Java

为什么接口类型被认为与重载完全不同?

来自分类Dev

为什么接口类型不提供“ IsNil”方法?

来自分类Dev

为什么方法返回接口类型的对象?

来自分类Java

为什么我需要显式转换泛型调用?

来自分类Java

为什么实现接口的类与Java中的接口类型不同?

来自分类Dev

C#中的通用接口类型推断怪异

Related 相关文章

  1. 1

    将具体的实现类型转换为通用接口类型

  2. 2

    无法将实例类型转换为实例实现接口的接口类型

  3. 3

    关闭无法隐式转换为通用接口类型的成员的通用接口的类的实例

  4. 4

    为什么我不能将对象转换为其接口类型?

  5. 5

    使用C#和反射将接口类型转换为具体类型

  6. 6

    为什么在Dart中有条件地强制转换为接口类型失败?

  7. 7

    为什么必须将类明确转换为其接口类型?

  8. 8

    在Linq表达式中将对象转换为通用接口类型

  9. 9

    泛型类型的隐式转换失败,接口类型

  10. 10

    使用基类进行C#接口类型转换

  11. 11

    ASP.NET MVC在操作过滤器中将视图模型转换为通用接口类型

  12. 12

    为什么拆箱需要在C#中进行显式转换?

  13. 13

    如何在vb.net中将类型为“ System .__ ComObject”的COM对象转换为接口类型为“ ESRI.ArcGIS.Carto.FeatureLayer”?

  14. 14

    为什么我必须显式转换为约束类型?

  15. 15

    Typescript接口类型值转换为联合类型

  16. 16

    Typescript将未知类型转换为接口类型

  17. 17

    我可以在接口中使用接口类型吗?

  18. 18

    将使用URLClassLoader创建的对象转换为接口类型

  19. 19

    在VBA中强制转换为接口类型

  20. 20

    Swift:从接口类型数组转换为对象数组崩溃

  21. 21

    如何确定类型是否实现特定的通用接口类型

  22. 22

    为什么将StreamReader对象类型转换为IDisposable接口?

  23. 23

    我应该如何确定查询返回到 GraphQL 接口类型的显式类型?

  24. 24

    为什么接口类型被认为与重载完全不同?

  25. 25

    为什么接口类型不提供“ IsNil”方法?

  26. 26

    为什么方法返回接口类型的对象?

  27. 27

    为什么我需要显式转换泛型调用?

  28. 28

    为什么实现接口的类与Java中的接口类型不同?

  29. 29

    C#中的通用接口类型推断怪异

热门标签

归档