Очень часто можно наблюдать такую ситуацию, когда программист, имеющий опыт программирования на C++, самоуверенно заявляет, что легко способен разобраться в коде на C#, а потому много тратить время на изучение C# нет необходимости. Он и так, можно сказать, уже квалифицированный программист на C#, так как он имел уже дело со стуктурами и классами на C++, и его не удивишь такими понятиями, как конструктор, приватный или открытый метод и т.д.
Продемонстрировать, что он не прав, достаточно несложно с помощью простой демонстрационной программы, которая сразу же позволит выявить, знаком ли он с C#, или его знакомство с C# ограничилось пока лишь его самонадеянностью.
Программа элементарно проста и, фактически, никаких действий не выполняет. Нужно всего лишь ответить, будет ли она компилироваться в каждой из представленных ее модификаций, и обхъяснить почему она будет или не будет компилироваться.
Вот эта программа. Первая модификация кода использует ключевое слово
struct при объявлении типа
UserStruct using System;
struct UserStruct
{
public UserStruct(int x) { this.x = x; }
private int x;
}
class EntryPoint
{
static void Main()
{
UserStruct a = new UserStruct();
Console.WriteLine(a);
}
}
Во второй модификации ключевое слово
struct заменено словом
class using System;
class UserStruct
{
public UserStruct(int x) { this.x = x; }
private int x;
}
class EntryPoint
{
static void Main()
{
UserStruct a = new UserStruct();
Console.WriteLine(a);
}
}
Никаких других различий между примерами кода нет.
Итак, вопрос для размышления. Будут ли компилироваться представленные модификации простой программы. Возможные ответы:
1. оба примера кода будут компилироваться
2. оба примера кода не будут компилироваться
3. первый пример кода будет компилироваться, второй - нет
4. первый пример кода не будет компилироваться, второй будет.