-1

2 つのパラメーターを持つメソッドを含むクラスがあります。これらのパラメーターの値を設定するためにプロパティを使用していますが、それらをメソッドに渡す方法がわかりません。クラス名は ZipLoad です。

    private string user1;
    private string pass1;

    public string setUser
    {
        set { user1 = value ; }
    }
    public string setPass
    {
        set { pass1 = value; }
    }

    private void DOit(string uName, string pWord)
    {
      Do some stuff...
    }

私はそれを初期化するためのこのコードを持っています...

    ZipLoad myZipLoad = new ZipLoad();
    myZipLoad.setUser = "abc";  // can be anything !
    myZipLoad.setUser = "abc123";

メソッドを使用できるようにするには、次に何をすればよいですか?

ありがとうございました。

4

7 に答える 7

3

これはどう:

public ZipLoad(string uName,string pWord)
{
user1= uName;
pass1=pWord;
DOit(uName,pWord);
}
private string user1;
private string pass1;

private void DOit(string uName, string pWord)
{
  Do some stuff...
}

その後、あなたはそれを呼び出すことができます

ZipLoad myZipLoad = new ZipLoad("name","pw");
于 2013-04-30T09:55:06.693 に答える
1

メソッドが何であったかはあまり明確ではありませんDOitが、それが 内にある場合、何らかの理由ZipLoadでプロパティが のみであることを考慮して、フィールドを使用できます。set

そう:

public class ZipLoad  {
 .... 
    private void DOit(string uName, string pWord)
    {
      Do some stuff...
    }

    //someone calls it 
    DOit(user1 , pass1);
 ....
}

しかし、私がすることは、内部でもプロパティを使用することです。そのため、次のように定義します。

public string setUser
{        
    get {return user1}
}
public string setPass
{
    get{ returnpass1 ; }
}

これらはオブジェクトを使用できるようにするために必要なプロパティであることを考慮して、クラスのctorからフィールドの値を設定します(少なくとも、提供されたコードから理解できる限り)

于 2013-04-30T09:58:03.400 に答える
1

設定するプロパティがuser1ありpass1DOitメソッドが に設定されているprivate場合、このメソッドにパラメーターを実際に渡す必要はありません。

ZipLoadオブジェクトを簡単に初期化できます。

ZipLoad myZipLoad = new ZipLoad();
myZipLoad.setUser = "abc";  // can be anything !
myZipLoad.setPass = "abc123";

すでに行っているように、メソッドでプロパティ値を使用しますDOit。したがって、メソッドはパラメーターなしで再定義できます。

private void DOit()
{
    Do some stuff...
}
于 2013-04-30T10:19:53.877 に答える
0

ここには多くの混乱があるようです。私があなたのことを正しく理解していれば、あなたが何をしたいのかに応じて、2 つの選択肢があります。

メソッドのシグネチャを変更できる場合は、次のようにするだけです。

private string user1;
private string pass1;

public string setUser
{
    set { user1 = value ; }
}
public string setPass
{
    set { pass1 = value; }
}

private void DOit() // Note: No parameters here!
{  
    // use setUser and setPass directly here, like:
    var user = setUser;
    Do some stuff...
}

メソッドの署名を変更することができず、何らかの理由 (おそらくテスト目的、またはその他の理由) で絶対に値をパラメーターとして渡したい場合は、オーバーロードがオプションになる可能性があります。

private string user1;
private string pass1;

public string setUser
{
    set { user1 = value ; }
}
public string setPass
{
    set { pass1 = value; }
}

// New method, just to call the other one:
private void DOit() 
{  
    // Just call the original method, with 
    // the properties as parameters:
    DOit(setUser, setPass);
}

// Your original method:
private void DOit(string uName, string pWord) 
{  
    Do some stuff...
}
于 2013-04-30T10:22:57.437 に答える
0

プロパティを介してメソッドで使用される値を設定しているため、それらをメソッドに再度渡す必要はありません。

ただし、これらの変数がメソッドでのみ使用される場合 (および ZipLoad クラスに格納する必要がない場合) は、プロパティを削除して次を使用します。

myZipLoad.DOit("abc", "abc123");

DOitただし、メソッドを公開する必要があります。

于 2013-04-30T09:55:21.170 に答える
0

メソッドpublicにする必要があり、メソッドにユーザー名とパスワードを渡す必要はありません。メソッドでそれらを使用するだけです。

public void DOit()
    {
       //you can reach your parameters from here...
    }

したがって、これを次のように使用できます。

    ZipLoad myZipLoad = new ZipLoad();
    myZipLoad.setUser = "abc";  // can be anything !
    myZipLoad.setUser = "abc123";
    myZipLoad.DOit();
于 2013-04-30T09:56:13.527 に答える