Come già menzionato, questo non può essere fatto esattamente all'interno di un inizializzatore. È accettabile assegnare semplicemente null alla proprietà invece di non impostarla affatto? Se è così, puoi usare l'approccio che altri hanno indicato. Ecco un'alternativa che compie ciò che si vuole e utilizza ancora la sintassi di inizializzazione:
ServerConnection serverConnection;
if (!windowsAuthentication)
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
Login = user,
Password = password
};
}
else
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
}
A mio parere, non dovrebbe davvero importa molto. A meno che tu non abbia a che fare con tipi anonimi, la sintassi dell'inizializzatore è solo una caratteristica piacevole che può rendere il tuo codice più ordinato in alcuni casi. Direi, non fare il possibile per usarlo per inizializzare tutte le proprietà se sacrifica la leggibilità. Non c'è niente di sbagliato nel fare il seguente codice invece:
ServerConnection serverConnection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
if (!windowsAuthentication)
{
serverConnection.Login = user,
serverConnection.Password = password
}
fonte
2010-07-12 14:16:18
Ciao, perché il downvote? Questa informazione non è corretta? –
C'è un modo migliore, come @SLaks menzionato di seguito –