2013-07-04 28 views
-1

我想從另一個類調用非靜態變量。如果我將其設爲靜態,它會影響我的其他代碼。從另一個類調用非靜態變量

我有兩個類Harvest_Client和Harvest_Project。

在我Harvest_Project類我已經

public int _client_id{ get; set;} 

I'just想要做Harvest_Client類,

public int _id = Harvest_Project._client_id; 

我應該怎麼做呢?

+0

實例化該類並訪問其getter方法! – NINCOMPOOP

+2

你的命名非常不標準。 Propeties從首都開始,而不是以'_' –

回答

4

首先,你應該重命名屬性(它不是一個變量)與.NET命名約定,如符合

public int ClientId { get; set; } 

接下來,你需要一個實例HarvestProject(-更名後)的。不要只是創建一個新的 - 你需要的情況下,它的客戶端ID你有興趣在一個我們不能告訴你它是哪一個 - 但如果你不已經有實例HarvestProject,您應該計算出您希望如何指定您想要的客戶端ID。

認爲它是這樣的:如果我問你「多大了?是一個人」你當然想知道其中我正在談論的人。這裏完全一樣。

+1

+1爲特殊問題解密技巧。 – 2013-07-04 12:17:39

1

也許經過參照班會做你需要的東西:

public class Harvest_Project 
    { 
     public string Name { get; set; } 
     public int clientId { get; set; } 
    } 

    public class Harvest_Client 
    { 
     private Harvest_Project MyInstance; 

     private int myid; 

     public int MyId 
     { 
      get 
      { 
       return myid; 
      } 
      private set 
      { 
       MyId = value; 
      } 
     } 
     public Harvest_Client(Harvest_Project cls) 
     { 
      MyInstance = cls; 
      MyId = cls.clientId;//since class reference present no 
           //need for the property. 
           //its just here to show if in your 
           //project you really just need ID 
           //in this example its redundant 
     } 

    } 

取決於你正在嘗試做的,你可以讓Harvest_Project對象或更好的字典的名單,如果有各種類型的「項目」,他們可以全部放入根據指定鍵進行編目的詞典中。

0

有一刻我想推薦考慮下面的屬性聲明public int ClientId {get; private set;"}它允許你禁止從第三方代碼設置這個變量,如果你真的需要這個。否則,你將有普通的全局變量

相關問題