Является ли «Windows» зарезервированным именем папки для nuget?
blockquote>Краткий ответ - да. Я скачал ваш пакет nuget и открыл его с помощью NuGet Package Explorer (его можно купить в магазине Microsoft). Затем я заметил, что папка Windows помечена как Target Frameworks:
Если мы изменим
Windows
на другое слово, оно станет общая папка, которую можно добавить в проект:Затем Я ищу официальный документ Nuget [ 114] Целевые рамки , обнаружили, что
Windows
действительно является зарезервированным полем в качестве Поддерживаемые рамки :Надеюсь, это поможет.
Эти методы являются на самом деле тем же.
Эту функцию называют varargs, и это - функция компилятора. Негласно, переводит в бывшую версию.
Существует ловушка при определении метода, который принимает Объект..., и Вы отправили один параметр текстового объекта []!
Я хотел бы добавить к объяснению Shimi, чтобы добавить, что другое ограничение varargs синтаксиса - то, что vararg должен быть последним заявленным параметром. Таким образом, Вы не можете сделать этого:
void myMethod(String... values, int num);
Это означает, что любой данный метод может только иметь единственный vararg параметр. В случаях, где Вы хотите передать несколько массивов, можно использовать varargs для только одного из них.
На практике varargs в своих лучших проявлениях при обработке args как произвольного числа отличных значений, а не как массив. Java5 отображает их на массив просто, потому что это было самой удобной вещью сделать.
Хорошим примером является String.format (). Здесь, varargs подобраны против заполнителей формата в первом аргументе.
Последний был представлен в Java 5, и существующие библиотеки постепенно переделываются для поддержки его. Вы могли бы все еще использовать первого, чтобы подчеркнуть, что метод требует 2 + исходные данные, плюс существуют ограничения на то, где... может использоваться.
Нет, конечно, никаких проблем производительности или подобных вещей для рассмотрения, таким образом, это сводится к семантике.
Вы ожидаете, что у вызывающей стороны Вашего метода будет массив Foo, готового под рукой? Затем используйте Foo [] версия. Используйте varargs вариант для подчеркивания возможности наличия "набора" Foo вместо массива.
Классическим примером для varargs является формат строки (в C#, не знайте как его названный в Java):
string Format(string formatString, object... args)
Здесь Вы ожидаете, что args будет иметь различные типы, также - массив аргументов был бы вполне unusal, следовательно varargs вариант.
С другой стороны, в чем-то как
string Join(string[] substrings, char concatenationCharacter)
использование Массива совершенно разумно.
Также обратите внимание, что у Вас может быть несколько параметров массива и только один vararg параметр в конце списка параматери.