#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. Это помогло найти проблемы и исправить.