Loading...
pganev91 avatar pganev91 0 Точки

Проблем при компилирането на 02. Expression / C#

Здравейте! Тепърва започнах да се обучавам по програмиране. Чета няколко книги, едната от които е тази на Светлин Наков "Въведение в програмирането със C#" и се записах в курса по "Основи на програмирането C#". Реших да прегледам архивите от предишните лектори и да се впиша в Judge системата на SoftUni, за да се опитам да реша нещо. Уви, стигнах до задача номер №2 Expression /Израз/ и въвеждайки това в Judge:

using System;

namespace Expression
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine((3522 + 52353) * 23 - (2336 * 501 + 23432 - 6743) * 3);
    }
  }
}

получих следната грешка:

"Compiled file is missing. Compiler output: ...\tmpE9A3.tmp(7,7): error CS0103: The name 'Console' does not exist in the current context"...

В dotnetfiddle реших да опитам с using директивата 'System', но получих друга грешка там:
"Fatal Error: Public Main() method is required in a public class"...

Преди това опитах и с using static директивата, но пак ми дава грешки...
using static System.Console;
using static System.Math;
class Program
{
  static void Main()
  {
    WriteLine((3522 + 52353) * 23 - (2336 * 501 + 23432 - 6743) * 3);
  }
}

Реших да послушам компилатора от dotnetfiddle и стана:
using System;
namespace Expression
{
  public class Program
  {
    public static void Main(string[] args)
    {
      Console.WriteLine((3522 + 52353) * 23 - (2336 * 501 + 23432 - 6743) * 3);
    }
  }
}

Защо се случва това? Във връзка с актуализация на драйвери и библиотеки на C#, или пък използвам по-нова версия на .NET, или пък е заради разликата между .NET Core и .NET Framework?

Благодаря ви предварително!

Поздрави

0
Programming Basics 17/08/2019 21:35:53
svetoslav_0 avatar svetoslav_0 1009 Точки

Здравей!

Когато създадеш нов проект във Visual Studio, кодът, който се генерира за теб би трябвало да изглежда долу-горе така:

using System;

namespace Expression
{
  class Program
  {
    static void Main(string[] args)
    {
       Console.WriteLine("Hello World!");
    }
  }
}

За да нямаш проблеми от този тип, не пиптай тази конструкция по никакъв начин. Най-отгоре е достатъчно да имаш точно този "using" (въпреки, че Visual Studio генерира и още няколко, ако не ме лъже паметта, не ги пипай, нека си седят). Namespace може и да нямаш на теория, но така или иначе не ти пречи. Трябва да имаш class и Main фунция, която да бъде статична, да връща void.... и т.н. Наков имаше един лаф преди време: представи си, че си на готварски курс, там, където пише "Console.WriteLine("Hello World!");" (възможно е да липсва този ред при теб), това е твоят тиган, в който готвиш. Всичко друго е извън този твой тиган и за сега там не пипаш. Просто изтриваш този ред и всичко, което ще пишеш на този етап трябва да ти се пада между двете червени скоби.

Колкото до dotnetfiddle: за да пишеш там има една малка особеност: класът и Main фунцията трябва да бъдат публични, което означава, че точно преди "class" и "static" трябва да добавиш думичката "public". Защо така се случва е малко рано, но след време ще можеш да си ги обясниш тези неща, за сега се налага да ги приемаш за даденост. 

ПП: щом ти излиза

"Compiled file is missing. Compiler output: ...\tmpE9A3.tmp(7,7): error CS0103: The name 'Console' does not exist in the current context"...

Тогава е много вероятно да ти липсва using System най-отгоре. Забелязвал съм, че се случва на много хора следната ситуация: решават си задачата във Visual Studio и когато маркират кода си, за да го копират и поставят в Judge, пропускат да маркират даедна част от кода си. Сигурен начин да се избегне тази ситуация е използването на клавишната комбинация Ctrl + A, която маркира целия текст.

0
17/08/2019 19:22:50
pganev91 avatar pganev91 0 Точки

Благодаря ти много за отзива, Светослав!
Стигнах до извода, че и в Judge системата на SoftUni би ми било необходимо да използвам "public" пред "class"-овете и "static void Main" функцията...

Поздрави

0
svetoslav_0 avatar svetoslav_0 1009 Точки

Радвам се, че съм бил полезен, но съм убеден, че не е неободимо класа и Main метода да са публични (или поне Judge не настоява за това), все пак не пречи, по твой избор :)

Поздрави!

0
pganev91 avatar pganev91 0 Точки

Прав си, аз съм се подвел... Грешката ми е била другаде. Току-що опитах пак, всичко работи "100/100"...
Благодаря ти!

0
18/08/2019 04:39:35
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.