他の人が述べたように、これは初期化子内で正確に行うことはできません。プロパティをまったく設定せずに、プロパティにnullを割り当てるだけでかまいませんか?もしそうなら、あなたは他の人が指摘したアプローチを使うことができます。これがあなたが望むことを達成し、それでも初期化構文を使用する代替案です:
ServerConnection serverConnection;
if (!windowsAuthentication)
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
Login = user,
Password = password
};
}
else
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
}
私の意見では、それはそれほど重要ではないはずです。匿名型を扱っている場合を除いて、初期化構文は、場合によってはコードをよりきれいに見せることができる機能を備えていると便利です。読みやすさを犠牲にする場合は、すべてのプロパティを初期化するためにそれを使用するのを邪魔しないでください。代わりに次のコードを実行しても問題はありません。
ServerConnection serverConnection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
if (!windowsAuthentication)
{
serverConnection.Login = user,
serverConnection.Password = password
}