Như những người khác đã đề cập, điều này không thể thực hiện chính xác trong trình khởi tạo. Có thể chấp nhận chỉ gán null cho thuộc tính thay vì không thiết lập nó không? Nếu có, bạn có thể sử dụng cách tiếp cận mà người khác đã chỉ ra. Dưới đây là một thay thế hoàn thành những gì bạn muốn và vẫn sử dụng cú pháp initializer:
ServerConnection serverConnection;
if (!windowsAuthentication)
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
Login = user,
Password = password
};
}
else
{
serverConection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
}
Theo ý kiến của tôi, nó không nên thực sự quan trọng hơn nhiều. Trừ khi bạn đang đối phó với các loại vô danh, cú pháp khởi tạo chỉ là một điều tốt đẹp để có tính năng có thể làm cho mã của bạn trông gọn gàng hơn trong một số trường hợp. Tôi sẽ nói, không đi ra khỏi con đường của bạn để sử dụng nó để khởi tạo tất cả các tài sản của bạn nếu nó hy sinh khả năng đọc. Không có gì sai với việc đoạn mã sau thay vì:
ServerConnection serverConnection = new ServerConnection()
{
ServerInstance = server,
LoginSecure = windowsAuthentication,
};
if (!windowsAuthentication)
{
serverConnection.Login = user,
serverConnection.Password = password
}
Nguồn
2010-07-12 14:16:18
Xin chào, tại sao bạn lại bỏ phiếu? Thông tin này có đúng không? –
Có cách tốt hơn, như @SLaks được đề cập bên dưới –