using System; 
using System.Collections.Generic; 
using System.Text; namespace ConsoleApplication1 

public interface ITest 

void HelloWorld(string pamName); 

//实现他的类 
class a:ITest//使用接口 

public void HelloWorld(string pamName) 

Console.WriteLine("hi"+pamName); 


//使用它: 
//比如在另一个类中调用 
class b 

ITest myITest; 
ITest MyITest{ 
get{ 
return myITest; 

set{ 
myITest=value; 

}//接口类型的属性MyITest 
//需要的地方直接使用接口的方法就可以了 //下面该怎么用呢
static void Main() { 
b a = new b(); 
a.MyITest = "aaa"; 
} } 
} 他会提示“无法将类型“string”隐式转换为ConsoleApplication1.ITest 原文是http://www.dotnetsky.net/netsave/ShowTopic-15504.html

解决方案 »

  1.   

    static void Main() { 
    b a = new b(); 
    a.MyITest = new a();
    a.MyITest.HelloWorld("aaa"); 

      

  2.   

    谢谢啊
     a.MyITest = new a();//这句话是在干什么?
    接口类型的属性 应用在哪些方面呢?
      

  3.   

    楼上正解
    myITest是一个实例,你把字符串给它当然类型不一致了.
      

  4.   

    要写属性的话
    public interface ITest 
    {
    string  MyITest{get;}
    void HelloWorld(string pamName); 

    但是这样a,b都要改
    class a:ITest//使用接口 
    {
    string myitest;
    public string MyITest
    {
    get
    {
    return "";
    }
    set
    {}

    public void HelloWorld(string pamName) 

    Console.WriteLine("hi"+pamName); 


    b
    class b 

    string myITest = "aaaa"; 
    public string MyITest{ 
    get{ 
    return myITest; 

    set{ 
    myITest=value; 

    public void HelloWorld(string pamName) 


    }
    大体这样
      

  5.   

    public   interface   ITest   

    string     MyITest{get;set;} 
    void   HelloWorld(string   pamName);   
    }   
      

  6.   

    谢谢我明白了using System;
    using System.Collections.Generic;
    using System.Text;namespace ConsoleApplication1
    {
    public interface ITest
    {
        string myITest {get;set;} //定义属性
        void HelloWorld(string pamName);//定义方法
    }
    //实现他的类
    class a:ITest//使用接口
    {
        string mytest;
        public string myITest //实现接口内属性
        {
        get{
            return mytest;
        }
        set {
            mytest = value;
        }
        }
         public void HelloWorld(string pamName) //实现接口内方法
        {
          Console.WriteLine("hi"+pamName);
        }
    }
    //使用它:
    //比如在另一个类中调用
    class b
    {
       ITest myITest;
       ITest MyITest{
           get{
               return myITest;
           }
           set{
               myITest=value;
           }
       }//接口类型的属性MyITest
       //需要的地方直接使用接口的方法就可以了
        static void Main()
        {
            a a = new a();
            a.HelloWorld("aaaa");//1
            ITest I = a;
            I.HelloWorld("aaaa");//2 声明ITest接口的变量 指向实现它的类-对象a        b b = new b();//3 .原文:http://www.dotnetsky.net/netsave/ShowTopic-15504.html 第三个接口类型的属性 我真不知道它那样的方法实现步骤该怎样理解, 我刚学完C#中的属性 对于接口类型的属性不知道怎么使用 还有实际应用是在哪些方面
            b.MyITest = new a();
            b.MyITest.HelloWorld("aaaa");
        }
        
    }
    }我重新改写了,可以帮我看看第三个地方,那个接口类型的属性应用吗。3往下一行b.MyITest = new a();这样写的作用是什么?接口类型的属性在什么地方会用到?
      

  7.   

    错误原因:
    你在定义属性的时候,它返回的是ITest类型的,但是你给它赋值为字符串类型的,显然会有
    "无法将类型“string”隐式转换为ConsoleApplication1.ITest   "这个错误!定义属性往往要跟定义私有字段放在一起!单独的定义一个属性是没有什么大的意义!但是在接口里面不允许定义字段,所以在接口里面你只能定义属性。在什么情况下要用属性呢?
    当你定义了一个私有字段,而在类的外部你还想对它的值进行读取或修改,那么就可以定义一个公有的属性来访问那个私有的字段,这也就是属性的作用了。最好让属性返回一个具体的类型,而不要是一个接口,这样我感觉有些不太合理~
      

  8.   

    原来可以哦,这个问题问的好~
    定义接口类型的属性,可以通过它访问实现该接口的所有类的字段吧!
    例子中,你通过b类的属性获得了A类的对象a,那么你就可以调用A 类里面的公有成员了,不是么?
      

  9.   

    哈 我已经完全明白了,谢谢楼上几位 我自己试了试,原来那那人根本就没表达清楚意思,这是我写好的东西,理清条理了。
    public interface ITest
    {
        string Name {get;set;} //定义属性
        void HelloWorld(string pamName);//定义方法
    }
    //实现他的类
    class a:ITest//使用接口
    {
        string name="";
        public string Name //实现接口内属性
        {
        get{
            return name;
        }
        set {
            name = value;
        }
        }
         public void HelloWorld(string pamName) //实现接口内方法
        {
          Console.WriteLine("我是"+pamName+",是被冤枉的!!");
        }
    }
    //使用它:
    //比如在另一个类中调用
    class b
    {
        static void Main()
        {
            ITest I = new a();//接口指向实现类(声明ITest接口的变量 指向实现它的类-对象a)
            I.Name = "陈冠希";
            I.HelloWorld(I.Name);
            //原文http://www.dotnetsky.net/netsave/ShowTopic-15504.html 结论:接口不能被实例化,只能指向实体类    }
        
    }
      

  10.   

    using System; 
    using System.Collections.Generic; 
    using System.Text; namespace ConsoleApplication1 

    public interface ITest 

    void HelloWorld(string pamName); 

    //实现他的类 
    class a:ITest//使用接口 

    public void HelloWorld(string pamName) 

    Console.WriteLine("hi"+pamName); 


    //使用它: 
    //比如在另一个类中调用 
    class b 

    ITest myITest; 
    ITest MyITest{ 
    get{ 
    return myITest; 

    set{ 
    myITest=value; 

    }//接口类型的属性MyITest 
    //需要的地方直接使用接口的方法就可以了 //下面该怎么用呢
    static void Main() { 
    b a = new b(); 
    a.MyITest = new a();
    a.MyITest.HelloWorld("aaa"); 
    } }