Введение: Всем привет, меня зовут Андрей, я хочу написать серию уроков по С#, все уроки будут касаться игр, так или иначе. Что нам потребуется для уроков: 1) Иметь железо(компьютер,ноу). 2) Среда разработки, я буду использовать Microsoft Visual 2010. Вот можете скачать бесплатную среду разработки www.microsoft.com/visualstudio/eng/downloads#d-2010-express После установки можете приступать к написанию своей первой программы на С#. 3) Меньше лени.
Пожелания по поводу уроков оставляйте ниже в комментариях.
УРОК 1 (Привет Мир)
Давайте запустим нашу Студию и выберем новый проект консольное приложение. Пропишите ему имя и тп. После у вас должно получится вроде что то этого:
Переходим в образователе решения на наш файл с кодом у меня Program.cs и радуемся что Студия сама написала практически всю наше программу, кроме двух строчек (вот как выглядит мой Program.cs) :
Код
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication2 { class Program {
static void Main(string[] args) {
} } }
Теперь нам нужно заставить вывести компьютер текст на экран. Для этого в главной функции программы Main между фигурными скобками написать :
Это директива.. бла бля - это просто ярлык, который уменьшает количество печатаемого текста. Вот как бы нам пришлось писать в программе если бы мы не написали using System;
В данной программе ненужно, ее просто создала Студия по стандарту, можете проверить удалите ее и программа работает так, как и работала раньше. Скажу в пару словах что это - пространство имен System.Collections.Generic содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, обеспечивающие повышенную производительность и безопасность типов.
Третья строка программы:
Код
using System.Linq;
Пространство имен System.Linq содержит классы и интерфейсы, которые поддерживают запросы, использующие LINQ. Пространство имен System.Linq находится в сборке System.Core (в файле System.Core.dll). И я вас удивлю, она тоже не нужна для нашей программы. Удаляем ее)
Четвертая строка программы:
Код
using System.Text;
Удаляем ее, сегодня она нам не пригодится.
Пятая строчка программы:
Код
namespace ConsoleApplication2 {
}
Ключевое слово namespace (пространство имён) используется для объявления области, которая содержит набор связанных объектов. ConsoleApplication2 имя которое я дал программе.
Шестая строчка программы:
Код
class Program { }
Это класс. Классы объявляются с помощью ключевого слова class, как показано выше. Классы могут быть открытыми и внутренними. Это права доступа к класу и ее перемененными. Program - это имя класса, его можете изменить.
Седьмая строка программы:
Код
static void Main(string[] args) { }
Это создание главной функции программы, функция Main является стартом для программы. Static - модификатор static используется для объявления статического члена, принадлежащего собственно типу, а не конкретному объекту. Модификатор static можно использовать с классами, полями, методами, свойствами, операторами, событиями и конструкторами, но нельзя — с индексаторами, деструкторами или типами, отличными от классов. Void- При использовании в качестве типа возвращаемого значения для метода, void указывает, что метод не возвращает значение. То есть наша функция ничего не возвращает в программу. Main - имя главной функции программы. (string[] args) - если ваша программа не будет обрабатывать входящие аргументы командной строки, то можете использовать перегрузку Main без аргументов. как в нашем случаи все что в круглых скобках можно стереть.
Восьмая строка программы:
Код
Console.WriteLine("Hello world");
Заставляет вывести на экран текст, им можно выводить любой текст программы.
Девятая строка программы:
Код
Console.ReadKey();
Она тоже не нужная, просто если запустить программу без нее то вы не успеете у видеть что наша программа делает, ведь Console.ReadKey(); заставляет работать консоль пока вы не нажмете любую клавишу на клавиатуре, эта команда считывает клавиатуру.
Вот как выгледит наша программа без лишних строк кода:
Ну что спасибо за внимание, жалобы и пожелания оставляйте в комментариях)
ПЕРЕМЕННЫЕ, ТИПЫ ДАННЫХ, КОНСТАНТЫ В C#
Язык С#, язык жестокой типизации. Каждая переменная должна быть определенного типа данных Переменная-это именованная область памяти. Вот встроенные типы данных:
Для того что бы мы могли использовать переменную нам нужно ее объявить.
Код
static void Main(string[] args) { int a;//объявляем переменную a=3;//присваиваем значение int a,b;//можно объявлять сразу несколько переменных через запятую float f=0.2f;//можно при объявлении переменной указывать ее значения это называется инициализацией переменной bool e;//объявляем логический тип e=false;//указываем ее значения char i="Hello";//объявление символьной переменной с ее инициализацией }
Язык чувствительный к регистру бук, то есть int A; и int a; это не одна и та же переменная.
Константа – это переменная, значение которой нельзя изменить. Константы используются для гарантирования того, что данные в этой переменной не изменятся. Для того, чтобы объявить константу, перед обычным объявлением переменной нужно добавит ключевое слово const:
Константы могут быть двух типов: простые литералы и строчные:
Код
tatic void Main(string[] args) { Console.WriteLine(100); // 100 есть 100 и этого не изменить, это константа, а точнее числовой литерал Console.WriteLine("Hello!"); // строка “Hello!” является строчным литералом }
Начиная с версии C# 3.0 в язык было добавлено ключевое слово var, которое позволяет создавать переменные без явного указания типа данных. Тип данных такой переменной определяет компилятор по контексту инициализации.
Код
static void Main(string[] args) { var number = 5; // number будет типа int var text ="some text"; // text будет типа string var number2 = 0.5; // number2 будет типа double }
Все типы данных, о которых мы говорили выше, являются структурными. Также существуют ссылочные типы. Из базовых типов к ссылочным относятся object и string. Тип object является базовым для всех остальных типов данных. Типу string соответствует строка символов Unicode.
И снова здравствуйте, я решил писать урок СОЗДАНИЕ ПРОСТОГО СЕРВЕРА TCP/IP НА C#, но еще будет продолжение. Я буду использовать TcpListener, есть много других вещей чем можно его реализовать.
Как я уже писал, сервер будет простой: Сервер ждет клиента--Сервер отправляет сообщение клиенту--Сервер отключает клиента
Ну что создаем консольное приложение. В нем мы создадим Сервер. Первое что нам нужно так это прописать директивы (using), которые нам потребуются
Код
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System.Net.Sockets;
Разбор полета:
Код
using System;
Меньше писанины при выводе и вводе.
Код
using System.Collections.Generic;
Пространство имен System.Collections.Generic содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, обеспечивающие повышенную производительность и безопасность типов. Это я писал в первом уроке.
Код
using System.Text;
Пространство имен System.Text содержит классы, представляющие кодировки ASCII и Юникод.
Код
using System.IO;
Пространство имен System.IO содержит типы, позволяющие осуществлять чтение и запись в файлы и потоки данных, а также типы для базовой поддержки файлов и папок.
Код
using System.Net;
System.Net пространство имен предоставляет простой программный интерфейс для многих из протоколов
Код
using System.Net.Sockets;
Предоставляет управляемую реализацию интерфейса Windows Sockets (Winsock) для тех разработчиков, которым требуется жесткий контроль доступа к сети.
С эти разобрались теперь сам сервер:
Код
namespace ExampleTcpClient //Рабочее пространство { class Program //Открытие класса { static void Main(string[] args)//Главная функция программы { ASCIIEncoding encoding = new ASCIIEncoding();//Что бы получать при приеме нормальные буквы Byte[] message = encoding.GetBytes("Hi, i love you");//Отправляет сообщение тому кто подключился
try { IPAddress localAddress = IPAddress.Parse("127.0.0.1");//создает localhost TcpListener listener = new TcpListener(localAddress,27015);//указываем порт
listener.Start(1);
while (true) { Console.WriteLine("Weit {0}", listener.LocalEndpoint);//выводит текст что ожидается подключение к такому то адресу TcpClient client = listener.AcceptTcpClient();//подключение клиента NetworkStream io = client.GetStream();//открытие канала для передачи
Console.WriteLine("Call for {0}", client.Client.RemoteEndPoint);//сообщение передается и адрес передаваемого
Console.WriteLine("Message go...");//писать что идет передача сообщения io.Write(message, 0, message.Length);//показать сообщение
Console.WriteLine("Cloze");//написать что соединение с клиентом завершено client.Close();//завершение соединения } } catch (Exception e)//если что то пошло не так { Console.WriteLine("Errors {0}", e.Message);//сообщение об ошибке } } } }
Мы создали синхронное соединение – нам необходимо дождаться подключения чтобы программа смогла продолжить работу.Запустите telnet (из командной строки) и присоединимся к нашему серверу. Продолжим выполнение программы, как только присоединимся. telnet localhost 27015 Окно Telnet покажет нам сообщение переданное сервером. Вот ссылка если у вас не включен telnet, как его включить:http://netler.ru/ikt/windows7-telnet.htm
Вот весь код программы:
Код
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System.Net.Sockets;
namespace ExampleTcpClient { class Program { static void Main(string[] args) { ASCIIEncoding encoding = new ASCIIEncoding(); Byte[] message = encoding.GetBytes("Hi, i love you");
Transced, Уважаемый Андрей, можно поинтересоваться, вы правда думаете, что этот урок является хоть чем-то полезным? Попрошу не засорять форум подобным бредом. Уроки писать должны опытные люди и на те темы, которые явно незаезженные, ну уж точно не еще один ХеллоВорлд.
DonaldDuck, хочу написать про создание много поточного сервера с клиентом, по передаче веб страницы или сообщений.
Добавлено (24.12.2013, 00:43) --------------------------------------------- СОЗДАНИЕ ПРОСТОГО СЕРВЕРА TCP/IP НА C#
И снова здравствуйте, я решил писать урок СОЗДАНИЕ ПРОСТОГО СЕРВЕРА TCP/IP НА C#, но еще будет продолжение. Я буду использовать TcpListener, есть много других вещей чем можно его реализовать.
Как я уже писал, сервер будет простой: Сервер ждет клиента--Сервер отправляет сообщение клиенту--Сервер отключает клиента
Ну что создаем консольное приложение. В нем мы создадим Сервер. Первое что нам нужно так это прописать директивы (using), которые нам потребуются
Код
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System.Net.Sockets;
Разбор полета:
Код
using System;
Меньше писанины при выводе и вводе.
Код
using System.Collections.Generic;
Пространство имен System.Collections.Generic содержит интерфейсы и классы, определяющие универсальные коллекции, которые позволяют пользователям создавать строго типизированные коллекции, обеспечивающие повышенную производительность и безопасность типов. Это я писал в первом уроке.
Код
using System.Text;
Пространство имен System.Text содержит классы, представляющие кодировки ASCII и Юникод.
Код
using System.IO;
Пространство имен System.IO содержит типы, позволяющие осуществлять чтение и запись в файлы и потоки данных, а также типы для базовой поддержки файлов и папок.
Код
using System.Net;
System.Net пространство имен предоставляет простой программный интерфейс для многих из протоколов
Код
using System.Net.Sockets;
Предоставляет управляемую реализацию интерфейса Windows Sockets (Winsock) для тех разработчиков, которым требуется жесткий контроль доступа к сети.
С эти разобрались теперь сам сервер:
Код
namespace ExampleTcpClient //Рабочее пространство { class Program //Открытие класса { static void Main(string[] args)//Главная функция программы { ASCIIEncoding encoding = new ASCIIEncoding();//Что бы получать при приеме нормальные буквы Byte[] message = encoding.GetBytes("Hi, i love you");//Отправляет сообщение тому кто подключился
try { IPAddress localAddress = IPAddress.Parse("127.0.0.1");//создает localhost TcpListener listener = new TcpListener(localAddress,27015);//указываем порт
listener.Start(1);
while (true) { Console.WriteLine("Weit {0}", listener.LocalEndpoint);//выводит текст что ожидается подключение к такому то адресу TcpClient client = listener.AcceptTcpClient();//подключение клиента NetworkStream io = client.GetStream();//открытие канала для передачи
Console.WriteLine("Call for {0}", client.Client.RemoteEndPoint);//сообщение передается и адрес передаваемого
Console.WriteLine("Message go...");//писать что идет передача сообщения io.Write(message, 0, message.Length);//показать сообщение
Console.WriteLine("Cloze");//написать что соединение с клиентом завершено client.Close();//завершение соединения } } catch (Exception e)//если что то пошло не так { Console.WriteLine("Errors {0}", e.Message);//сообщение об ошибке } } } }
Мы создали синхронное соединение – нам необходимо дождаться подключения чтобы программа смогла продолжить работу.Запустите telnet (из командной строки) и присоединимся к нашему серверу. Продолжим выполнение программы, как только присоединимся. telnet localhost 27015 Окно Telnet покажет нам сообщение переданное сервером. Вот ссылка если у вас не включен telnet, как его включить:http://netler.ru/ikt/windows7-telnet.htm
Вот весь код программы:
Код
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System.Net.Sockets;
namespace ExampleTcpClient { class Program { static void Main(string[] args) { ASCIIEncoding encoding = new ASCIIEncoding(); Byte[] message = encoding.GetBytes("Hi, i love you");
Язык С#, язык жестокой типизации. Каждая переменная должна быть определенного типа данных Переменная-это именованная область памяти. Вот встроенные типы данных:
Для того что бы мы могли использовать переменную нам нужно ее объявить.
Код
static void Main(string[] args) { int a;//объявляем переменную a=3;//присваиваем значение int a,b;//можно объявлять сразу несколько переменных через запятую float f=0.2f;//можно при объявлении переменной указывать ее значения это называется инициализацией переменной bool e;//объявляем логический тип e=false;//указываем ее значения char i="Hello";//объявление символьной переменной с ее инициализацией }
Язык чувствительный к регистру бук, то есть int A; и int a; это не одна и та же переменная.
Константа – это переменная, значение которой нельзя изменить. Константы используются для гарантирования того, что данные в этой переменной не изменятся. Для того, чтобы объявить константу, перед обычным объявлением переменной нужно добавит ключевое слово const:
Константы могут быть двух типов: простые литералы и строчные:
Код
tatic void Main(string[] args) { Console.WriteLine(100); // 100 есть 100 и этого не изменить, это константа, а точнее числовой литерал Console.WriteLine("Hello!"); // строка “Hello!” является строчным литералом }
Начиная с версии C# 3.0 в язык было добавлено ключевое слово var, которое позволяет создавать переменные без явного указания типа данных. Тип данных такой переменной определяет компилятор по контексту инициализации.
Код
static void Main(string[] args) { var number = 5; // number будет типа int var text ="some text"; // text будет типа string var number2 = 0.5; // number2 будет типа double }
Все типы данных, о которых мы говорили выше, являются структурными. Также существуют ссылочные типы. Из базовых типов к ссылочным относятся object и string. Тип object является базовым для всех остальных типов данных. Типу string соответствует строка символов Unicode.