オブジェクトフィールドを関数パラメータとして使用する他のフィールド[重複]
新しいオブジェクトフィールドを関数パラメータとして他のフィールドとして使用することは可能ですか(この同じオブジェクトの初期化で)?
List<Reservations> reservations = new List<Reservations>()
{
new Reservations{title="Grooming", className=checkColor(title)},
};
public string checkColor(string title)
{
...
}
回答
Sisir
コードの現在の設計では不可能です。その理由は、オブジェクトが完全に構築される前に、オブジェクトの1つのフィールドを別のフィールドで参照することはできないためです。これは、クラスレベルの変数として宣言しているときに、あるフィールド値を別のフィールド値で使用できない理由と同じです。
しかし、あなたが達成できる方法、あなたがしたいことがあります。
オプション1:
const string titleText = "Grooming";
List<Reservations> reservations = new List<Reservations>()
{
new Reservations{title=titleText, className=checkColor(titleText)},
};
private static string checkColor(string title)
{
...
}
オプション2:
class Consumer
{
List<Reservations> reservations = new List<Reservations>()
{
new Reservations{title="Grooming"}
};
}
class Reservations
{
string _title;
public string title
{
get
{
return _title;
}
set
{
_title = value;
className = checkColor(title);
}
}
public string className;
private string checkColor(string title)
{
return "";
}
}