簡體   English   中英

無法在C#中訪問其他某些類中的類?

[英]Can't access Class in some other class in c#?

我有一個班級文件JobSeekerBO,它有變量

   string _username = string.Empty;
   string _password = string.Empty;

我將值設置如下

public string Username
{
    get { return _username; }
    set { _username = value; }
}

public string Password
{
    get { return _password; }
    set { _password = value; }
}

但是問題是我在另一個類文件class1.cs訪問該變量,所以我創建了該類文件的對象

JobSeekerBO objBO = new JobSeekerBO();

但是我無法從JobSeekerBO.cs文件訪問class1.cs類文件中的UsernamePassword

我也嘗試按照以下方式公開該變量

public string _username = string.Empty;
public string _password = string.Empty;

沒有公共訪問修飾符的相同類文件變量,我們可以在file1.aspx.cs文件中訪問

因此,請告訴我如何將一個.cs文件的變量和方法訪問到另一個.cs文件。

頁碼

您無法在課程外訪問_username_password因為默認情況下它們是私有的。 這意味着它們只能在類的主體內訪問。 但是您具有在這些字段上setsgets值的Public屬性 因此,您應該使用那些公共屬性。

JobSeekerBO objBO = new JobSeekerBO();
objBo.Username="someusername";
objBo.Password="myPassword";

假設您的班級看起來像這樣

public class JobSeekerBO
{ 
   string _username = string.Empty;
   string _password= string.Empty;      

   public string Username
   {
        get { return _username; }
        set { _username = value; }
   }        
   public string Password
   {
        get { return _password; }
        set { _password = value; }
   }    
}

通常,應僅將字段用於具有私有或受保護的可訪問性的變量。 您的類公開給客戶端代碼的數據應通過方法,屬性和索引器提供。

更多關於類字段這里在MSDN

編輯:查看您的代碼后。

您試圖在錯誤的位置設置公共屬性值。 你不能在那里做。 您應該使用一種方法來做到這一點(即使在您的構造函數中也可以)。

public class MailRepositary
{
  JobSeekerBO objBO = new JobSeekerBO();
  public MailRepositary()
  {
      objBo.UserName="works from constructor";
  }
  public void SomeMethod()
  {
      objBo.UserName="works from method also";
  }
}

JobSeekerBO類可能不在namespace

JobSeekerBO類必須與您訪問它的位置在相同的namespace中。

如果JobSeekerBO在另一個或不在namespace ,則必須包括包含JobSeekerBOnamespace ,或者必須在相同的namespace編寫JobSeekerBO

這樣,您應該就能獲取或設置用戶名和密碼。

var objBO = new JobSeekerBO();
var username = objBo.UserName;
var password = objBo.Password;

不需要將“后端”變量公開,它們可以是私有的。

在幾種情況下您將無法執行以下操作:

  1. 命名空間未正確引用
  2. 您指定的類(帶有屬性)可以設置為內部或受保護的內部(如果這樣),如果兩個類的名稱空間不同,請以公共形式提及

請驗證他們。

如果它是靜態類:

  1. 它們僅包含靜態成員。

  2. 它們無法實例化。

例如。

JobSeekerBO.UserName;   

//accessing the non-public member of the class with the public property

如果不是靜態類,則它應該具有public類,然后必須通過啟動對象進行訪問。

JobSeekerBO objBO = new JobSeekerBO();
objBo.Username = "XXXXXXX";
objBo.Password = "XXXXXXX";

要么

可能存在名稱空間問題。 就像該類在名稱空間中一樣,因此要訪問它,您必須對此進行引用。

using XYZ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM