0

1つのクラスファイル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();

しかし、自分のファイルUsernameからクラスファイルPasswordにアクセスできませんclass1.csJobSeekerBO.cs

また、以下のようにその変数を公開しようとしています

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

ファイル内でアクセスできるパブリックアクセス修飾子なしの同じクラスファイルfile1.aspx.cs変数

.csでは、あるファイルの変数とメソッドを別のファイルにアクセスする方法を教えてください.cs

ページコード

4

5 に答える 5

6

デフォルトではプライベートであるため、クラスにアクセスしたり、クラスの外部にアクセス_usernameしたりすることはできません。つまり、クラスの本体内でのみアクセスできます。ただし、これらのフィールドに値を持つパブリックプロパティがあります。したがって、これらのパブリックプロパティを使用する必要があります。_passwordsetsgets

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";
  }
}
于 2012-08-27T12:30:18.953 に答える
1

クラスJobSeekerBOnamespace!から外れている可能性があります。

JobSeekerBOクラスは、アクセスしている場所と同じである必要がありますnamespace

JobSeekerBOが別の場所にある場合、または別の場所にある場合は、を含むnamespace含めるか、同じ場所にJobSeekerBOを記述する必要があります。namespaceJobSeekerBOnamespace

于 2012-08-27T12:30:58.473 に答える
1

このようにするだけで、ユーザー名とパスワードを取得または設定できるはずです。

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

「バックエンド」変数をパブリックにする必要はありません。これらはプライベートにすることができます。

于 2012-08-27T12:31:19.720 に答える
1

実行できないシナリオはいくつかあります。

  1. 名前空間が適切に参照されていません
  2. uが指定したクラス(プロパティ付き)は、内部または保護された内部として設定できます。その場合、2つのクラスの名前空間が異なる場合は、パブリックとして言及してください。

それらを確認してください。

于 2012-08-27T12:41:44.833 に答える
0

静的クラスの場合:

  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;
于 2012-08-27T12:42:42.007 に答える