※ ChatGPTを利用し、要約された質問です(原文:C# プロパティのスコープ/寿命について)
C#プロパティのスコープ/寿命について
このQ&Aのポイント
C#でウィンドウアプリケーションを作成しています。TestClassクラスの中にPathsプロパティを持っているのですが、このプロパティは、コンストラクタの一番下に到達した時点で開放されています。プロパティのスコープってそういうものでしょうか。
TestClassクラスは上位でnewされてインスタンスが作成されていますが、このインスタンスが存在する間はデータが保持されると思っていたのです。逆に、インスタンスが存在する間、そのクラス内で値を保持するには、どうするのでしょうか?
TestClassクラスのPathsプロパティは、コンストラクタの最後に開放されているため、インスタンスが存在する間はデータが保持されず、値を保持する方法を知りたいです。
たびたびすみません。
いつもありがとうございます。
C#でウィンドウアプリケーションを作成しています。
今回下のような TestClass クラスを作りました。
TestClass クラスの中に Paths プロパティを持っているのですが、
このプロパティは、コンストラクタの一番下に到達した時点で開放されています。
プロパティのスコープってそういうものでしょうか。
この TestClass クラスは上位で new されてインスタンスが作成されていますが、
このインスタンスが存在する間はデータが保持されると思っていたのです。
逆に、インスタンスが存在する間、そのクラス内で値を保持するには、どうするのでしょうか?
よろしくお願い致します。
public partial class MainForm : Form
{
// プロパティ
TestClass Test {get; set;}
private void MainForm_Load(object sender, EventArgs e)
{
Test = new TestClass();
}
}
class TestClass()
{
// プロパティ
string[] Paths {get; set;}
// コンストラクタ
// Dirクラスには、複数のディレクトリ情報が格納されている
public TestClass(Dir[] dirs)
{
try {
string[] TagPaths = new string[Const.MaxNum.tag];
// Dirクラスのディレクトリ情報のうち、パスを取り出す
for (int i = 0; i < n; i++) {
Paths[i] = dirs[i].Path;
}
// 某処理
ActiveFAPanel = SetupXXX(Paths);
}
catch(Exception ex)
{
}
} ←●●●● ここに来た時点でPathsはnullとなっている
}
お礼
すみませんでした。 わかりました。 バカな間違いをしていました。 質問も削除できるものならしたいです。 あ~恥ずかしい。 ありがとうございました。
補足
回答いただきありがとうございます。 このプログラムでは、例外は発生していませんでした。 某処理と書いた部分は正常に実行されていますし、 もちろんその時点では Paths の内容はセットされています。 > 原因は Paths 自体の初期化処理が抜けてる すみません、この、抜けている初期化処理とはどういうものでしょう? よろしくお願いします。