Arhn - архитектура программирования

В чем разница между (string[] args) и System.Environment.CommandLine?

Я наследую техническое обслуживание нескольких консольных приложений, которые, естественно, вводятся с помощью static void Main(string[] args). Однако код игнорирует массив args и вместо этого считывает параметры командной строки из System.Environment.CommandLine.

Есть ли здесь функциональная разница?

Содержимое выглядит одинаково. Во всяком случае, я бы заподозрил минутный удар по производительности, вызвав System.Environment.CommandLine (но не настолько, чтобы я когда-либо был обеспокоен или достаточно заботился, чтобы измерить).


ОБНОВЛЕНИЕ: я подозревал, что System.Environment.CommandLine должен содержать путь к исполняемому файлу, но я его не видел... потому что искал не в том месте. Код ТАКЖЕ имеет string[] arrCmdLine = System.Environment.GetCommandLineArgs(); .... System.Environment.CommandLine.ToLower() проверяется на наличие «отладки», в то время как все остальные параметры извлекаются из GetCommandLineArgs(), и я мысленно объединял их, пока думал «почему бы просто не использовать args[]

В течение многих лет я мучился над тем, как лучше всего анализировать аргументы командной строки, когда все время это было «поместить их в правильном порядке!» [джк]


Ответы:


1

System.Environment.CommandLine включает исполняемый файл и аргументы в виде одной строки.

// Sample for the Environment.CommandLine property.
using System;

class Sample 
{
    public static void Main() 
    {
        Console.WriteLine();
        //  Invoke this sample with an arbitrary set of command line arguments.
        Console.WriteLine("CommandLine: {0}", Environment.CommandLine);
    }
}

/*
This example produces the following results:

C:\>env0 ARBITRARY TEXT

CommandLine: env0 ARBITRARY TEXT
*/

http://msdn.microsoft.com/en-us/library/system.environment.commandline.aspx

Параметр args представляет собой массив аргументов. Так что, хотя вы можете анализировать отдельные аргументы из System.Environment.CommandLine, я не уверен, зачем вам это нужно. Единственная причина, по которой я вижу, заключается в том, что вам нужно получить доступ к аргументам за пределами Main(), что, вероятно, в любом случае является плохой идеей. Ваш метод Main() должен обрабатывать аргументы и передавать их остальной части приложения по мере необходимости.

14.06.2012
  • Как лучше всего разделить аргументы на массив с помощью Environment.CommandLine? Причина в том, что My.Application.CommandLineArgs не включает кавычки, если они были в аргументах. то есть был передан путь со строками, которые нужно заключить в кавычки. Единственный способ точно увидеть необработанные аргументы, включая кавычки, - это Environment.CommandLine, но тогда он не разбивается на массив. 01.05.2020
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..