Tôi là một người mới sử dụng C # và tôi vừa gặp phải một vấn đề. Có sự khác biệt giữa C # và Java khi xử lý toán tử bậc ba ( ? :
).
Trong đoạn mã sau, tại sao dòng thứ 4 không hoạt động? Trình biên dịch hiển thị thông báo lỗi của there is no implicit conversion between 'int' and 'string'
. Dòng thứ 5 cũng không hoạt động. Cả hai đều List
là đồ vật, phải không?
int two = 2;
double six = 6.0;
Write(two > six ? two : six); //param: double
Write(two > six ? two : "6"); //param: not object
Write(two > six ? new List<int>() : new List<string>()); //param: not object
Tuy nhiên, mã tương tự hoạt động trong Java:
int two = 2;
double six = 6.0;
System.out.println(two > six ? two : six); //param: double
System.out.println(two > six ? two : "6"); //param: Object
System.out.println(two > six ? new ArrayList<Integer>()
: new ArrayList<String>()); //param: Object
Tính năng ngôn ngữ nào trong C # bị thiếu? Nếu có, tại sao nó không được thêm vào?
int
không phải là một đối tượng. Nó là một nguyên thủy.
ArrayList<String>
và ArrayList<Integer>
trở thành chỉ ArrayList
trong bytecode. Điều này có nghĩa là chúng dường như là cùng một loại tại thời điểm chạy. Rõ ràng trong C # chúng là các loại khác nhau.