Vì trình biên dịch không thể suy ra loại tốt nhất từ các toán hạng của toán tử điều kiện.
Khi bạn viết condition ? a : b
, thì phải có một chuyển đổi ngầm từ các loại a
để loại b
, hoặc từ các loại b
để loại a
. Trình biên dịch sau đó sẽ suy ra loại biểu thức toàn bộ làm loại mục tiêu của chuyển đổi này. Thực tế là bạn gán nó cho một biến kiểu decimal?
không bao giờ được trình biên dịch xem xét. Trong trường hợp của bạn, các loại a
và b
là decimal
và một số tham chiếu không xác định hoặc loại có thể vô hiệu hóa. Trình biên dịch không thể đoán ý bạn là gì, vì vậy bạn cần trợ giúp:
decimal? compRetAmount = !string.IsNullOrEmpty(txtLineCompRetAmt.Text)
? decimal.Parse(txtLineCompRetAmt.Text.Replace(",",""))
: default(decimal?);
Nguồn
2012-02-16 09:23:29
Chúng tôi không quan tâm đến người đọc, những gì không hiệu quả? –
Nó được gọi là toán tử điều kiện, không phải toán tử bậc ba –
@JakubKonecki mặc dù nó rõ ràng. Luôn luôn cung cấp càng nhiều thông tin càng tốt. Trong trường hợp này, lỗi biên dịch –