Объектные массивы в сигнатурах методов

Является ли «Windows» зарезервированным именем папки для nuget?

blockquote>

Краткий ответ - да. Я скачал ваш пакет nuget и открыл его с помощью NuGet Package Explorer (его можно купить в магазине Microsoft). Затем я заметил, что папка Windows помечена как Target Frameworks:

enter image description here

Если мы изменим Windows на другое слово, оно станет общая папка, которую можно добавить в проект:

enter image description here

Затем Я ищу официальный документ Nuget [ 114] Целевые рамки , обнаружили, что Windows действительно является зарезервированным полем в качестве Поддерживаемые рамки :

enter image description here [1115 ]

Надеюсь, это поможет.

5
задан Henrik Paul 6 October 2008 в 12:08
поделиться

4 ответа

Эти методы являются на самом деле тем же.

Эту функцию называют varargs, и это - функция компилятора. Негласно, переводит в бывшую версию.

Существует ловушка при определении метода, который принимает Объект..., и Вы отправили один параметр текстового объекта []!

12
ответ дан 18 December 2019 в 10:50
поделиться

Я хотел бы добавить к объяснению Shimi, чтобы добавить, что другое ограничение varargs синтаксиса - то, что vararg должен быть последним заявленным параметром. Таким образом, Вы не можете сделать этого:

void myMethod(String... values, int num);

Это означает, что любой данный метод может только иметь единственный vararg параметр. В случаях, где Вы хотите передать несколько массивов, можно использовать varargs для только одного из них.

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

Хорошим примером является String.format (). Здесь, varargs подобраны против заполнителей формата в первом аргументе.

3
ответ дан 18 December 2019 в 10:50
поделиться

Последний был представлен в Java 5, и существующие библиотеки постепенно переделываются для поддержки его. Вы могли бы все еще использовать первого, чтобы подчеркнуть, что метод требует 2 + исходные данные, плюс существуют ограничения на то, где... может использоваться.

1
ответ дан 18 December 2019 в 10:50
поделиться

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

Вы ожидаете, что у вызывающей стороны Вашего метода будет массив Foo, готового под рукой? Затем используйте Foo [] версия. Используйте varargs вариант для подчеркивания возможности наличия "набора" Foo вместо массива.

Классическим примером для varargs является формат строки (в C#, не знайте как его названный в Java):

string Format(string formatString, object... args)

Здесь Вы ожидаете, что args будет иметь различные типы, также - массив аргументов был бы вполне unusal, следовательно varargs вариант.

С другой стороны, в чем-то как

string Join(string[] substrings, char concatenationCharacter)

использование Массива совершенно разумно.

Также обратите внимание, что у Вас может быть несколько параметров массива и только один vararg параметр в конце списка параматери.

0
ответ дан 18 December 2019 в 10:50
поделиться
Другие вопросы по тегам:

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