私はC#が初めてで、これをやりたいと思っていますが、知らないし、知らないかもしれません!
SyncJob というクラスがあります。My Documents からファイルをバックアップするインスタンスを作成できるようにしたい (ほんの一例)。次に、SyncJob の別のインスタンスを作成して、別のフォルダーにファイルをバックアップしたいと考えています。つまり、メモリ内に同じクラスのインスタンスを複数持つことができます。
コード内で最初にオブジェクト var を宣言しているので、その下にあるすべてのメソッドからアクセスできます。
私の質問は、同じインスタンス名を使用するとオブジェクトの新しいインスタンスがメモリ内に作成されますが、これらのオブジェクトを管理するにはどうすればよいですか? つまり、プロパティの 1 つを設定したい場合、どのインスタンスに変更を適用するかをコンパイラに伝えるにはどうすればよいでしょうか?
最初に言ったように、これは同じクラスの複数のインスタンスを管理するための間違ったスキームかもしれません...もっと良い方法があるかもしれません。
ここに私のプロトタイプコードがあります:
Form1.cs
namespace Class_Demo
{
public partial class Form1 : Form
{
BMI patient; // public declarition
public Form1()
{
InitializeComponent();
}
private void btnCreateInstance1_Click(object sender, EventArgs e)
{
patient = new BMI("Instance 1 Created", 11); // call overloaded with 2 arguments
displayInstanceName(patient);
}
private void displayInstanceName(BMI patient)
{
MessageBox.Show("Instance:"+patient.getName()+"\nwith Age:"+patient.getAge());
}
private void btnCreateInstance2_Click(object sender, EventArgs e)
{
patient = new BMI("Instance 2 Created", 22); // call overloaded with 2 arguments
displayInstanceName(patient);
}
private void btnSetNameToJohn_Click(object sender, EventArgs e)
{
// this is the issue: which instance is being set and how can I control that?
// which instance of patient is being set?
patient.setName("John");
}
private void btnDisplayNameJohn_Click(object sender, EventArgs e)
{
// this is another issue: which instance is being displayed and how can I control that?
// which instance of patient is being displayed?
displayInstanceName(patient);
}
}
}
クラスファイル:
namespace Class_Demo
{
class BMI
{
// Member variables
public string _newName { get; set; }
public int _newAge { get; set; }
// Default Constructor
public BMI() // default constructor name must be same as class name -- no void
{
_newName = "";
_newAge = 0;
}
// Overload constructor
public BMI(string name, int age)
{
_newName = name;
_newAge = age;
}
//Accessor methods/functions
public string getName()
{
return _newName;
}
public int getAge()
{
return _newAge;
}
public void setName(string name)
{
_newName = name;
}
}
}