gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:25:11 24 4
gpt4 key购买 nike

我有一个界面:

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

所有实现 Profile 的对象都有一个 Name 和一个 Alias,但有些对象限制 Alias 这样它是始终与 Name 相同。应用此限制的可以像这样实现 Alias:

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

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

使用 return this.Name; 作为 getter 实现会导致此错误:

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?)

最佳答案

Since this within the context of an explicit interface implementation can only possibly be of type Profile

这不是真的。您正在 ConcreteProfile 类中实现 Profile.Alias。在此上下文中,this 指的是 ConcreteProfile 实例,可用于访问 ConcreteProfile 实例的任何成员。

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

因为你想访问Profile.Name,你必须将this转换为Profile

关于c# - 为什么我需要在 C# 显式实现中将 'this' 转换为接口(interface)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com