Дженерики C# - странный [закрытый] вопрос об интервью

0 выключает предупреждения полностью, в то время как 4 самый подробный уровень. Посмотрите документация здесь, который имеет те же уровни предупреждения.

8
задан Grace Note 12 May 2010 в 18:48
поделиться

12 ответов

Некоторые люди безумны. Вам следует улыбнуться и кивнуть.

23
ответ дан 5 December 2019 в 04:30
поделиться

день ... сон ... в ... компьютере ....

«Ты задал ему вопрос?»

«Да»

«Да? он сказал вам, что это был BS? »

« Нет »

« Вы нашли его на StackOverflow, спрашивая, как ответить на вопрос? »

« Да »

« Хорошо, теперь мы знаем. Получите следующий парень здесь "

" Бва ... ха ... ха ... "повторить ...

13
ответ дан 5 December 2019 в 04:30
поделиться

Тот факт, что k и d всегда равны int , не делает метод менее универсальным, он просто означает что эти параметры всегда равны int независимо от типа a , b & c .

11
ответ дан 5 December 2019 в 04:30
поделиться

Все универсальные - это параметризованные типы. Я не знаю, о чем говорит ваш интервьюер. Утверждает ли он, что метод не является полностью универсальным, потому что не все параметры метода имеют универсальный тип?

Вы не обязаны использовать один и тот же тип параметра для всех параметров, и при этом все типы параметров не должны быть универсальными .

3
ответ дан 5 December 2019 в 04:30
поделиться

Предполагая, что вопрос собеседования является реальным, я поискал в Google "Generics are not" + c # и получил следующее:

  • Generics не являются шаблонами C ++
  • дженерики - это не просто магия компилятора
  • дженерики не ковариантны
  • дженерики - это не только конструкция язык C #; дженерики определены с CLR.
  • Общие функции не ограничиваются определений
  • Обобщения используются не только для коллекции
  • Универсальные шаблоны не ограничиваются классами
  • C # выполняет своего рода стирание, но это не такой серьезный, как у Java, и причина в том, что дженерики не Специфическая функция C #, а скорее функция, которая должна работать в .NET, который поддерживает несколько языков.

У меня вообще нет совпадений для «Универсальные шаблоны не являются полностью универсальными» или «Универсальные не всегда универсальные».

Так вот. Удачи.

4
ответ дан 5 December 2019 в 04:30
поделиться

Насколько мне известно, это общий метод, поскольку он имеет параметр типа. То, что не все параметры относятся к общему типу, не имеет значения.

2
ответ дан 5 December 2019 в 04:30
поделиться

Возможно, он имел в виду, что a , b и c должны быть одного типа, но это глупо.

3
ответ дан 5 December 2019 в 04:30
поделиться

@Udana, могло ли быть так, что интервьюер пытался угадать ваш ответ, задавая вам вопрос, не имеющий смысла?

Однажды у меня было интервью, в котором задавался вопрос теста " каков размер маржи по умолчанию для winform ». Я ответил: «Я не знаю, и мне все равно, так как я могу установить любое значение в конструкторе»

В конце интервью интервьюер сказал мне, что вопрос был уловкой, чтобы увидеть, кто угадает, а кто - будь честным, когда они чего-то не знали.

0
ответ дан 5 December 2019 в 04:30
поделиться

Он спросил меня, докажу ли я, что это дженерики, и мне будет разрешено принять участие в следующем раунде. Я не знал, чего он ждет от меня, и что он на самом деле имеет в виду, показывая такой пример.

Похоже, этот интервьюер ищет ответы, данные здесь - если ваша формулировка его вопроса отражает его намерения, то он не утверждая, что универсальные шаблоны не являются универсальными, он спрашивает, можете ли вы разумно обсудить «универсальность» указанного метода.

Как отмечали некоторые другие, это общий метод, поскольку он позволяет пользователю определять видимый атрибут функции (в данном случае тип первых трех параметров) в более позднее время. Тот факт, что k и d не являются общими параметрами, может показаться отвлекающим маневром.

2
ответ дан 5 December 2019 в 04:30
поделиться

Хммм, поздняя публикация, но лучше поздно, чем никогда! : -)

Предполагая, что ваш интервьюер знает его вещи, это действительно вопрос, который интервьюер спрашивает вас, чтобы сделать следующее:

  1. Проверьте свои знания.
  2. Тестируйте вас с заявлением, что он знает, неверно, чтобы увидеть, как вы будете реагировать на него, и как вы подойдуте к нему ответ.
  3. Вовлеките вас в дебатах, чтобы вы могли отдохнуть и свободно говорить о предмете, с которым вы, надеетесь, у вас есть некоторое знакомство с.

Хороший интервьюер достигнет всех трех, в то время как не так хороший интервьюер, может просто искать способы попытаться поймать вас, потому что он просил интервью у него слишком много кандидатов.

В конце дня, если вы не знаете ответ или понять вопрос, вам лучше говорить так в интервью, и если вы не согласны с заявлением, посмотрите на него как возможность расслабиться и участвовать в обсуждении, а не просто отвечать на вопросы во время интервью.

И для того, что это стоит, ответ заключается в том, что описанный метод является универсальным методом, независимо от того, являются ли некоторые параметры фиксированного типа или нет. Доказательство находится в самом декларации, где общий синтаксис эффективно указывает на компилятору сделать пособия для общих аргументов.

1
ответ дан 5 December 2019 в 04:30
поделиться

Буквально понимая вопрос:

  1. Покажите ему, что вы можете позвонить, используя T как строку, int и произнесите Button.
  2. Покажите ему скомпилированный общий код - я думаю, это с помощью ILDASM, вы можете увидеть общий метод для ссылочных типов. Вы также можете увидеть настроенные версии универсального метода для типов значений, но я не могу вспомнить, как это сделать. Может, у кого-то еще получится.
0
ответ дан 5 December 2019 в 04:30
поделиться

Эй, это хороший вопрос по дженерикам. интервьюер просто хотел узнать ваше знакомство с дженериками.в имени метода используется просто для указания типа при вызове метода. это может или не может быть указано во время звонка. как

PrintThis("a","b", "c", int k,int d) // to specify <T> as string. 

, это будет использоваться только при компиляции. поэтому 3 параметра, в которых указано, будут только одного типа.

PrintThis<string> ("a","b", "c", int k,int d) // explicitly specifying the type when you call the method. 

так что мы просто указываем, что он строго типизирован.

0
ответ дан 5 December 2019 в 04:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: