代码之家  ›  专栏  ›  技术社区  ›  Troskyvs

C:如何设置显式实现接口的属性?

  •  0
  • Troskyvs  · 技术社区  · 5 年前

    我有一段代码:

    public interface Imy
    {
        int X { get; set; }
    }
    
    public class MyImpl : Imy
    {
        private int _x;
        int Imy.X
        {
            get => _x;
            set => _x = value;
        }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            var o = new MyImpl();
            o.Imy.X = 3;//error
            o.X = 3;//error
        }
    }
    

    我只想给X赋值,但是得到了2个编译错误。如何修复?

    1 回复  |  直到 5 年前
        1
  •  8
  •   René Vogt    5 年前

    实现接口时 ,需要将变量强制转换到接口:

    ((Imy)o).X = 3;
    

    o 类型 MyImpl Imy 显式地使用接口属性。


    或者,你可以声明 作为 :

    Imy o = new MyImpl();
    o.X = 3;