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 (+пример);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5.1);k(DevLang-csharp)&rd=true).
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". В главном методе создаем объект нашего класса как положено и кидаем его в консоль. Второй свежо испеченный объект также отправляется следом.
Статья подошла к концу (на большее не один из модераторов не согласится, все мы люди...) А что не было изложено сейчас, будет изложено в следующих статьях.
Автор рад и благодарит Вас за Ваше внимание. Желает всего хорошего!
Смотрите также:
Комментарии
Для начинающих будет сложновато и даже я пару раз на несколько секунд притупил, но для начала пойдёт
Мда, а до меня и не доходили мысли типа
char[] CrazyWorld = new char[]
Надо будет запомнить :)
Напиши лучше продолжение вот этого: http://devtribe.ru/p/programming/very-fast-c-sharp-1
И лучше без этой показушной "craziness".
Mihahail, Вы читаете мои мысли! У меня есть идея написать о наследование и как оно реализовано в C#, а эксперименты c "craziness" больше не будет.
Простите, я может не совсем правильно понял, но какова суть статьи ? Обучение или своего рода насмешка над языком ?
kano:
Простите, я может не совсем правильно понял, но какова суть статьи ? Обучение или своего рода насмешка над языком ?
Данная статья не обучающая, и не является насмешка над языком.
Я задумывал показать читателям какими способами можно вывести "Привет мир" на консоль. Но получился кратки обзор языка.
Да способ подачи крайне сложен, но я красным уже написал.
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]