Код C # работает в Visual Studio 2019, но не в онлайн-компиляторе

#c# #compiler-errors #compilation #mono

#c# #ошибки компилятора #Сборник #mono

Вопрос:

Я провожу онлайн-тесты. Код отлично работает в моей Visual Studio 2019, но не тогда, когда я его отправляю. Даже другие онлайн-компиляторы выдают много ошибок компиляции. Настройки тестовой среды онлайн следующие: версия Mono C # для DMCS, версия компилятора 4.6.2.0 с флагами: -оптимизировать -r: System.Цифры {файлы}.

Я пытался изменить.NET target framework на 4, но я не получаю никаких ошибок на своем компьютере. Как я могу настроить Visual Studio на те же настройки, что и выше?

введите описание изображения здесь

использование System; использование System.Коллекции.Общий;

пространство имен capgemini_kattis { class Program { static void Main(строка[] аргументов) {

         /*
        >>>>>>>>>>>>>>>>>>>>>>>>>>>>>Task 2
        */
        bool isNumberOfCommandsRead = false;
        List<string> answer = new List<string>();
        string input = "????????????????????????????????";
        Char[] charArray = input.ToCharArray();
        int numberOfCommands = 0;
        string line;

        void CLEAR(int i)
        {
            charArray[i] = '0';
        }
        void SET(int i)
        {
            charArray[i] = '1';
        }
        void OR(int i, int j)
        {
            if (charArray[i] == '1' || charArray[j] == '1')
            {
                charArray[i] = '1';
            }
            else if (charArray[i] == '0' amp;amp; charArray[j] == '0')
            {
                charArray[i] = '0';
            }
            else
            {
                charArray[i] = '?';
            }
        }
        void AND(int i, int j)
        {
            if (charArray[i] == '1' amp;amp; charArray[j] == '1')
            {
                charArray[i] = '1';
            }
            else if (charArray[i] == '0' || charArray[j] == '0')
            {
                charArray[i] = '0';
            }
            else
            {
                charArray[i] = '?';
            }
        }

        while ((line = Console.ReadLine()) != null)
        {
            if (!isNumberOfCommandsRead)
            {
                numberOfCommands = Convert.ToInt32(line.Trim());
                isNumberOfCommandsRead = true;
                if (numberOfCommands == 0)
                {
                    break;
                }
            }


            else
            {
                string[] split = line.Split(new char[] { ' ' }, StringSplitOptions.None);

                switch (split[0].Trim().ToUpper())
                {
                    case "CLEAR":
                        CLEAR(Convert.ToInt32(split[1].Trim()));
                        numberOfCommands--;
                        break;

                    case "SET":
                        SET(Convert.ToInt32(split[1].Trim()));
                        numberOfCommands--;
                        break;

                    case "OR":
                        OR(Convert.ToInt32(split[1].Trim()), Convert.ToInt32(split[2].Trim()));
                        numberOfCommands--;
                        break;

                    case "AND":
                        AND(Convert.ToInt32(split[1].Trim()), Convert.ToInt32(split[2].Trim()));
                        numberOfCommands--;
                        break;
                }


                if (numberOfCommands == 0)
                {
                    Array.Reverse(charArray);
                    string sectionResult = "";
                    for (int i = 0; i < (new string(charArray)).Length; i  )
                    {
                        sectionResult  = charArray[i].ToString();
                        charArray[i] = '?';
                    }
                    answer.Add(sectionResult);
                    sectionResult = null;
                    isNumberOfCommandsRead = false;
                }
            }
        }

        foreach (string s in answer)
        {
            Console.WriteLine(s);
        }
        Console.ReadLine();
    }
}
  

}

Комментарии:

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

2. @Silvermind дело в том, что я меняю их, но понятия не имею, как соответствовать приведенным выше спецификациям из Mono DMCS…

3. Возможно, вы используете некоторые функции C # 8 и не осознаете этого. Почему бы вам не показать какой-нибудь код, который вызывает проблемы? Или, поскольку это mono, вы можете использовать некоторые библиотеки Windows, которые несовместимы. Опять же, просто догадываюсь без кода.

4. @gilliduck Я добавил код. Возможно, это помогло бы, спасибо. Может быть, лучше установить Mono в мою Windows и попробовать это?

Ответ №1:

Я обнаружил, чтоRepl.it выполняется компиляция на Mono C #, версия компилятора 4.6.2.0. Это помогло найти проблемы и исправить.