Tôi có một IDataRecord reader
rằng tôi lấy một chữ số thập phân từ như sau:Tại sao tôi không thể bỏ chọn một int dưới dạng số thập phân?
decimal d = (decimal)reader[0];
Đối với một số lý do này ném một ngoại lệ cast không hợp lệ nói rằng "diễn viên chỉ định không hợp lệ."
Khi tôi làm reader[0].GetType()
nó cho tôi biết rằng đó là Int32. Theo như tôi biết, đây không phải là vấn đề ....
Tôi đã thử nghiệm điều này bằng đoạn trích này hoạt động tốt.
int i = 3750;
decimal d = (decimal)i;
Điều này đã khiến tôi gãi đầu tự hỏi tại sao không thể bỏ hộp int chứa trong trình đọc dưới dạng thập phân.
Có ai biết tại sao điều này có thể xảy ra không? Có cái gì đó tinh tế tôi đang thiếu?
Trong một ý nghĩa, đó là một sự xấu hổ mà unboxing và đúc cú pháp trông giống hệt nhau, vì chúng là các hoạt động rất khác nhau. – jerryjvl
Cảm ơn Mehrdad. Lời giải thích và liên kết của bạn với blog của Eric khá hữu ích. – mezoid
Cảm ơn bạn! Điều này đã ném tôi cho một vòng lặp. – Darryl