Программирование: C# Для психов или извращенцев?

Читай на DevTribe.ru!

» Раздел: C#

В данной статье автор начнет с основ C#. Или не основ? Не важно! Важно то, что в C# есть полный мешок вариантов как скопипастить код "Hello ALL!", который новичок сразу не утащит.

Внимание! Данная статья не рекомендована лицам с высоким порогом горения, по причине крайне странного диалекта русского языка использованным автором, пометки "Crazy" и перегруженного содержания
Данная статья не обучающая, и не является насмешка над языком.
Статья задумывалась для показа читателям какими способами можно вывести "Привет мир" на консоль в виде краткого обзора языка.
void main() 
{
Console.WriteLine("Hello World!");
}

Классика

Начнем с классики жанра:
static void Main()
{
    Console.Write("Hi All!");		// Классический способ вывести сообщение "Hi All" в консоль
	// Console.ReadKey();			// Закомментированный статический метод ReadKey() класса System.Console возвращающий объект System.ConsoleKeyInfo  
}
Разбираемся. Так как автор давно ушел в дары MS'ту, он не знает другого классического способа, способного работать в VS Visual C#. Здесь указывается, что авторы языка работали на MS, если Вы не знакомы с данным языком рекомендую почитать.

Класс Console является статичным. Это означает, что скомпилированная программа создаст единственный и неповторимый объект данного класса, с которым и будет взаимодействовать программа. И да все его поля, свойства и методы также статичны.

Console.Write() - Метод вывода сообщений на консоль, умеет выводить строки, различные числа, даты и объекты с определенным методом String ToString(). Первоначально метод ToString() определен классом System.Object и возвращает строку типа "{...}" в которой перечисляются характеристики, поля и их значения.
Также в качестве входных параметров можно указать форматирующую строку типа "A = {0}" а дальше через запитую указать аргументы форматирования. Так это выглядит:
Console.Write("{0} {1}!", "Hello", "World");
// Hello World!
Также существует метод WriteLine(), роль которого такая же, что и у Write(), но он дополнительно переводит курсор строки на новую строку. Оба эти метода ничего не возвращают (хотя... возвращают void, но это тоже самое что и не чего)
Console.ReadKey() - функция ожидания нажатия клавиши клавиатуры. Имеет схожую роль с system("pause") из C++, но вместо ожидании нажатия ENTER, она срабатывает на любой клавише. На system("pause") больше похожи методы Console.Read() и Console.ReadLine(), но про них будет описание в другой статье. ReadKey() возвращает объект ConsoleKeyInfo, который можно использовать для проверки какая клавиша была нажата или сочетание клавиш (CTRL, ALT, SHIFT). Описание на MSDN (+пример).

Crazy Mode

Далее я приведу несколько извращенных способов вывода "Hello World!" на консоль используя возможности языка.
static void Main()
{
      char[] CrazyWorld = new char[] { 'H','e','l','l','o',' ','W','o','r','l','d','!'};
      Console.WriteLine(CrazyWorld);
      Console.ReadKey();
		// Получаем Hello World! 
}

static void Main()
{
    char[] CrazyWorld = new char[] { 'H','e','l','l','o',' ','W','o','r','l','d','!'};
    foreach(var i in CrazyWorld) Console.Write(i);
    Console.ReadKey();
	// Все тот же Hello World!
}

static void Main()
{
    char[] CrazyWorld = new char[] { 'H','e','l','l','o',' ','W','o','r','l','d','!'};
    for(var i = 0; i < CrazyWorld.Length; i++) Console.Write(CrazyWorld[i]);
    Console.ReadKey();
}

static void Main()
{   
    string CrazyWorld = "Hello STALKER";
    Console.Write(CrazyWorld.Substring(0,6)); // Подстрока 6-той символ пробел
    for(var i = 6; i < CrazyWorld.Length; i++) Console.Write("{0}.", CrazyWorld[i]);
    Console.ReadKey();
    // Hello S.T.A.L.K.E.R.       
}
А теперь десерт!
namespace HelloWorld
{
    /// <summary>
    /// Объекты будут приветствовать Вас
    /// </summary>
    class HelloYou
    {
        string YourName;
        public HelloYou(string name)
        {
            YourName = name;
        }

        public override string ToString() // Переопределяем реализацию Object.ToString()
        {
            return "Hello " + YourName + '!';
        }
    }
    /// <summary>
    /// Код сей проги поведает каким извращенцем может быть C#-прогер
    /// </summary>
    class Program
    {
        static void Main()
        {
            HelloYou helloQuest = new HelloYou("Quest");
            Console.WriteLine(helloQuest);
            Console.WriteLine(new HelloYou("Author"));
            Console.ReadKey();
            // Hello Quest!
            // Hello Author!
        }
    }
}
В примере выше автор создал класс HelloYou с конструктором принимающий имя того с кем нужно будет поздороваться экземпляру класса. В классе переопределяем метод ToString(), иначе в консоли мы увидим "HelloWorld.HelloYou". В главном методе создаем объект нашего класса как положено и кидаем его в консоль. Второй свежо испеченный объект также отправляется следом.
Статья подошла к концу (на большее не один из модераторов не согласится, все мы люди...) А что не было изложено сейчас, будет изложено в следующих статьях.
Автор рад и благодарит Вас за Ваше внимание. Желает всего хорошего!

Просмотров: 874

LeikyS #1 - 2 года назад 1
Для начинающих будет сложновато и даже я пару раз на несколько секунд притупил, но для начала пойдёт
Мда, а до меня и не доходили мысли типа
char[] CrazyWorld = new char[]
Надо будет запомнить :)
Mihahail #2 - 2 года назад 2
Напиши лучше продолжение вот этого: xgm.guru/p/programms/very-fast-c-sharp-1
И лучше без этой показушной "craziness".
VessTER #3 - 2 года назад 0
Mihahail, Вы читаете мои мысли! У меня есть идея написать о наследование и как оно реализовано в C#, а эксперименты c "craziness" больше не будет.
LeikyS #4 - 2 года назад 1
VessTER:
Mihahail, Вы читаете мои мысли! У меня есть идея написать о наследование и как оно реализовано в C#, а эксперименты c "craziness" больше не будет.
Удачи. По больше пишите статей)
kano #5 - 2 года назад 0
Простите, я может не совсем правильно понял, но какова суть статьи ? Обучение или своего рода насмешка над языком ?
VessTER #6 - 2 года назад 0
kano:
Простите, я может не совсем правильно понял, но какова суть статьи ? Обучение или своего рода насмешка над языком ?
Данная статья не обучающая, и не является насмешка над языком.
Я задумывал показать читателям какими способами можно вывести "Привет мир" на консоль. Но получился кратки обзор языка. (Да лапша это, я уже пилю вторую статью про классы, вот она для обучения будет годной)
Да способ подачи крайне сложен, но я красным уже написал.