代码如下: 
interface IName
    {
        string name
        {
            get;
            set;
        }
    }
class Progman:interface
{
     string IName.name
        {
            get;
            set;
        }
}怎么显示错误:错误
Console接口.Program.Console接口.IName.name.get”必须声明主体,因为它未标记为 abstract 或 extern
Console接口.Program.Console接口.IName.name.set”必须声明主体,因为它未标记为 abstract 或 extern
怎么改  刚刚学

解决方案 »

  1.   

    interface IName
      {
      string name
      {
      get;
      set;
      }
      }
    class Progman:interface
    {
      string IName.name
      {
      get{return null;};
      set{};
      }
    }
      

  2.   

    问下  get { return null ;}是什么意思 是不是返回为空   还有  可以解释下get 和set 我看书上面说:get 是读 set 是写  但是不懂
      

  3.   

    get -> getValueset -> setValue实际生成的代码可能是private string _name;string IName.name
      {
      get{return _name;};
      set{ _name=value };
      }
      

  4.   

    自动属性在C# 3.0 (vs2008+) 被支持。也就是你的代码不用修改可以在VS2008 C#3.0下正确编译。
      

  5.   


    public class BaseClass
    {
        public virtual void DoWork() { }
        public virtual int WorkProperty
        {
            get { return 0; }
        }
    }
    public class DerivedClass : BaseClass
    {
        public override void DoWork() { }
        public override int WorkProperty
        {
            get { return 0; }
        }
    }例如:
    DerivedClass B = new DerivedClass();
    B.DoWork();  // Calls the new method.BaseClass A = (BaseClass)B;
    A.DoWork();  // Also calls the new method.
    当派生类重写某个虚拟成员时,即使该派生类的实例被当作基类的实例访问,也会调用该成员。
    这句话是什么意思
      

  6.   

    对于接口,不存在基类,这句话可以忽略。它的意思是:如果你使用父类类型访问子类实例的属性,那么调用的还是子类属性的实现
    比如
    class A
    {
        public virtual string P { get; set; }
    }
    class B : A
    {
        private string _p;
        public override string P 
        { 
            get { Console.WriteLine("b.p"); return _p; }
            set { Console.WriteLine("b.p"); _p = value; }
        }
    }
    调用:
    A b = new B(); //虽然是A类型,但是实例化一个B的实例
    string s = b.P; //调用的是 b.p 而不是 a.p
    这很好理解,实际上属性就是方法。
    比如
    class A
    {
        public string P { get; set; }
    }
    其实就是
    class A
    {
        public string get_P() { ... }
        public void set_P(string value) { ... }
    }
      

  7.   

    interface IName
      {
      string name
      {
      get;
      set;
      }
      }
    class Progman:interface?????{
      string IName.name
      {
      get;
      set;
      }
    }
      

  8.   

    上楼的
    interface IName
      {
      string name
      {
      get;
      set;
      }
      }
    class Progman:interface?????{
      string IName.name
      {
      get;
      set;
      }
    }这个编译错误!因为在类里实现接口的属性,不能省略!
      

  9.   

    可以改成这个:
    class Progman:interface?????
    {
      private string _name;
      string IName.name
      {
      get{  return _name;}
      set{ _name=value;}
      }
    }
    还有别的改别法吗
      

  10.   


    已经告诉你了,没看?自动属性是C# 3.0新增的语法。之所以你不能编译,是因为你在使用C# 1.x(2002 2003) 或者 2.0(vs2005)
      

  11.   

    http://www.google.com.hk/#hl=zh-CN&source=hp&q=%E8%87%AA%E5%8A%A8%E5%B1%9E%E6%80%A7+csharp+3.0&gbv=2&oq=%E8%87%AA%E5%8A%A8%E5%B1%9E%E6%80%A7+csharp+3.0&aq=f&aqi=&aql=&gs_sm=e&gs_upl=1375l5765l0l5969l16l11l0l0l0l0l0l0ll0l0&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=5a9543715bda632a&biw=1280&bih=828
      

  12.   

    使用interface时,class要具体实现interface里的定义。