Я новачок на C #, і я просто стикаюся з проблемою. Існує різниця між C # та Java, коли йдеться про тернарний оператор ( ? :
).
Чому в наступному сегменті коду 4-й рядок не працює? Компілятор показує повідомлення про помилку there is no implicit conversion between 'int' and 'string'
. 5-й рядок також не працює. Обидва List
s є об'єктами, чи не так?
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
Однак той же код працює в 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
Яка функція мови в C # відсутня? Якщо є, чому її не додають?
int
не є об'єктом. Це примітив.
ArrayList<String>
і ArrayList<Integer>
стає просто ArrayList
в байт-коді. Це означає, що вони здаються абсолютно однаковими за часом. Очевидно, в C # вони бувають різних типів.