2015-04-03 53 views
-1

正如在標題中我試圖讓二傳​​到地址,但我有這個轉換錯誤。 我的Worker類的代碼。不能隱式地將類型'地址'轉換爲'字符串'設置器

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 

    namespace MAS_MP1 
    { 
     class Worker 
     { 
      string name, surname; 
      protected string adress; 
      int phoneNumber; 
      string birthDate; 

      Worker(String name, String surname, String adress, int phoneNumber, string birthDate) 
      { 
       this.name = name; 
       this.surname = surname; 
       this.adress = adress; 
       this.phoneNumber = phoneNumber; 
       this.birthDate = birthDate; 

      } 

      static List<Worker> list = new List<Worker>(); 

      public static void add(Worker p) 
      { 
       list.Add(p); 
      } 
      public void setA(Adress a) 
      { 
       this.adress = a; 
      } 
      public static void showExtension() 


{ 
      Console.WriteLine("Class Extesion"); 
      foreach (Worker p in list) 
      { 
       Console.WriteLine(p); 
      } 
      Console.ReadLine(); 

     } 
     override 
     public string ToString() 
     { 
      return "Name " + name + " Surname " + surname; 
     } 

     public static void Main(string[] args) 
     { 
      Worker p = new Worker("Tom,","Smith","NewStreet 8 London",123456,"12-12-2012"); 
      Adress a = new Adress("NewStreet" , 9 , "London"); 
      add(p); 
      showExtension(); 


     } 
    } 
} 

和錯誤是在這裏:

public void setA(Adress a) 
     { 
      this.adress = a; 
     } 

我儘量讓COMPEX屬性,所以我讓第二類Adress只有construstor和toString覆蓋方法。地址得到了街道,homeNumber和cityName屬性。

回答

0

這怎麼可能工作?你想存儲的Adress實例中的字符串...

protected string adress; 

public void setA(Adress a) 
{ 
    this.adress = a; 
} 

有一對夫婦的修正。

你可以改變你的存儲值的字段的類型:

protected Adress adress; 

,改變構造函數接受Adress還有:

Worker(String name, String surname, Adress adress, int phoneNumber, string birthDate) 

另外,修改你的二傳手所以你要存儲一個字符串:

public void setA(Adress a) 
{ 
    this.adress = a.ToString(); 
} 
+0

作品。我看到有什麼問題......謝謝! ;) – user2344333 2015-04-03 02:51:28

+0

還有一個問題。現在,當我創建新的對象工人,我需要在地址下張貼? – user2344333 2015-04-03 03:00:09

+0

我不確定你的意思。 「在地址下發帖」是什麼意思?你能指出你指的是哪一行代碼? – 2015-04-03 03:05:30

0

Grant Winney是正確的。

此代碼不起作用,因爲類型Adress與System.String不同。儘管它們是從System.Object派生的,但在執行Set時不能隱式地轉換它。

public void setA(Adress a) 
      { 
       this.adress = a; 
      } 
相關問題