2

class1 という名前のこのクラスがあるとします。class1 には、1 つのデフォルト コンストラクターと 1 つのパラメーター (たとえば文字列など) を受け取るコンストラクターが含まれています。そのコンストラクター内で変数を設定し、それを「string var」と呼びましょう。そのオブジェクトの作成中にコンストラクターに渡した文字列から var に値を取得させたいのですが、コンストラクターのスコープ外で var を使用できるようにしたいのですが、それは可能ですか? コンストラクターは値などを返さないためです。

ここで明確にするために、私がやりたいことのコード例を示します。

class class1
{
    public class1(string songPath)
    {
        System.Media.SoundPlayer songPlayer = new System.Media.SoundPlayer(songPath);
    }
//here I want to use my songPlayer I created with the passed string as songPath
}
4

3 に答える 3

4

フィールドを作成する必要がありますsongPlayer。これは、現時点で宣言されているコンストラクターにのみ表示されるローカル変数です。

private System.Media.SoundPlayer songPlayer;

public class1(string songPath)
{
    songPlayer = new System.Media.SoundPlayer(songPath);
}
于 2012-11-29T14:43:00.370 に答える
1

あなたのための別のオプションは、静的クラスとメソッドかもしれません

public static class1(string songPath)
{
    public static System.Media.SoundPlayer play(string songPath)
    {
        System.Media.SoundPlayer songPlayer = new System.Media.SoundPlayer(songPath);
        // play here ?
        // or return to play
        return songPLayer;
    }
}
于 2012-11-29T14:46:10.430 に答える
1

このようなプロパティを作成するだけです

//System.Media.SoundPlayer _songPlayer ;
public System.Media.SoundPlayer songPlayer 
{
  //if you have nay logic to handle ull 
 //get{ if(_songPlayer != null)  return _songPlayer; else null; } or just 
   get;
}


public class1(string songPath)
{
     SongPlayer  = new System.Media.SoundPlayer(songPath);
    //_songPlayer  = new System.Media.SoundPlayer(songPath);
}

注 : このメンバーをクラス外で使用する場合に役立ちます。それ以外の場合は、@Oded ソリューションを使用することをお勧めします。

nullの状況を処理したい場合は、プロパティにprivate vriableを使用してください

于 2012-11-29T14:44:47.093 に答える