接口的属性:
请看以下代码:
    public interface IMyInterface
    {
        void DoSomething();
        void DoSomethingelse();
        int DoThis { get; }
    }
    public class MyClass : IMyInterface
    {        #region IMyInterface 成员        public void DoSomething()
        {
            throw new NotImplementedException();
        }        void IMyInterface.DoSomethingelse()
        {
            throw new NotImplementedException();
        }
        protected int x;
        public int DoThis
        {
            get { return x; }
            set { x = value; }
        }
        #endregion
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyClass m = new MyClass();
            m.DoThis = 1;
            Console.WriteLine(m.DoThis.ToString());
            Console.ReadKey();
        }
    }那么我就疑惑了,如果按照常理,接口定义了get访问性,基类里不应该可以set。到底怎么回事呢?
接口里的属性定义的可访性,倒不如不为空。可是为空又提示必须要有其一。
那么想必有什么作用吧?

解决方案 »

  1.   

    什么叫常理?没有这种常理...接口IMyInterface约定必须有一个可get的int类型属性DoThis...MyClass实现了该属性,有没有set IMyInterface管不着也不需要管...
    接口只规定必须有什么,可不管你没有什么或多出来什么...
      

  2.   

    属性其实就是由一个Get方法和一个Set方法组成的,也就是说你相当于在接口里定义了get方法,
    你怎么能限制我在实现类里面再定义一个set方法呢?搂主可以想想。接口是很灵活的,只要实现类里面的形式以及参数一致,那就算是符合接口了,所以只要你的实现类里面
    有我定义的get方法就可以了,不强求set方法