Язык C# имеет набор встроенных типов, которые рассматриваются как псевдонимы типов в пространстве имен System. Например, тип string — это псевдоним типа System.String, а тип int — псевдоним типа System.Int32. Все встроенные типы подразделены на группы: целочисленные типы; вещественные типы; логический тип; символьные типы; объектный тип (object). Описание типов приведено в таблице 1.1.
Ключове слово
Псевдонім класу бібліотеки NET
Розмір (байт)
Рядок символів Unicode
Иерархия классов NET Framework имеет один общий корень — класс System.Object. Все типы разделяются на две категории: размерные типы и ссылочные типы.
При создании переменной размерного типа под нее в стеке выделяется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение размерного типа не может быть равным null. К размерным типам, например, относятся целочисленные и вещественные типы, структуры.
Вся суть программирования на C++
При создании переменной ссылочного типа память под созданный объект выделяется в другой области памяти, называемой кучей. Ссылка всегда указывает на объект заданного типа.
Структура приложения на языке С#.
Проектом называется совокупность файлов, содержащих информацию об установках, конфигурации, ресурсах проекта, а также файлов исходного кода и заголовочных файлов.
Интегрированная среда проектирования Visual Studio позволяет для создания проектов на разных языках программирования использовать различные инструментальные средства проектирования (например, Microsoft Visual Basic, Microsoft Visual C#).
Любое приложение на языке C#, разрабатываемое в среде проектирования Visual Studio, реализуется как отдельный проект. Приложение на языке С# может состоять из нескольких модулей. Каждый модуль C# может содержать код нескольких классов (при создании приложения в среде Visual Studio.NET каждый класс С# автоматически помещается в отдельный модуль — файл с расширением cs).
Для консольного приложения один из классов, реализуемых модулем, должен содержать метод Main. В языке C# нет аппарата заголовочных файлов, используемого в языке С++, поэтому код модуля должен содержать как объявление, так и реализацию класса. По умолчанию весь код класса, представляющего консольное приложение, заключается в одно пространство имен, одноименное с именем приложения.
Точкой входа в программу на языке C# является метод Main. Этот метод может записываться как без параметров, так и с одним параметром типа string — указателем на массив строк, который содержит значения параметров, введенных при запуске программы. В отличие от списка параметров, задаваемых при запуске С-прило- жения, список параметров С#-приложения не содержит в качестве первого параметра имя самого приложения. Код метода указывается внутри фигурных скобок:
static void Main(string[] args)
Ключевое слово static определяет, что метод Main является статическим методом, вызываемым без создания экземпляра объекта типа класса, в котором этот метод определен. Метод, не возвращающий никакого значения, указывается с ключевым словом void. Однако метод Main может возвращать значение типа int.
Работа с файлами с++. Запись в файл. c++ ofstream. Изучение С++ для начинающих. Урок #115
Пример 1. Вывод сообщения на консоль.
static void Main()
Console.WriteLine(«Уpa!n Сегодня «Информатика». «);
Замечание. Для отладки можно использовать команду меню DebugStart Without Debugging. На экране появится окно с результатом исполнения. Обратите внимание на надпись в конце программы: Press any key to continue, которая не была предусмотрена. При нажатии любой клавиши окно закрывается.
Это результат срабатывания встроенной разработчиками компилятора функции «остановки экрана» для того, чтобы можно было бы сколь угодно долго его рассматривать.
Можно использовать команду DebugStart Debugging, но тогда окно закроется и мы не сможем рассмотреть искомый результат. Для того чтобы обойти это неудобство, следует при разработке программы предусмотреть собственную остановку экрана. Для этого используется команда Console.Read();
Это неизменяемые в процессе выполнения программы величины.
Целые константы — наиболее распространенный тип int. Это целое число, которое может быть отрицательным, положительным или нулем -12, 5, 0 (все целые со знаком 32 бита). Их можно записывать с суффиксом -12L (длинное целое 64 бита), 5u (целое без знака 8 бит)
Вещественные константы с фиксированной точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F 1.2, -1.234, при записи константы типа double (64 бита) можно записать суффикс «d» или «D», но это не является обязательным условием: 1234.5678, 12.3d. Дробная часть отделяется от целой части точкой.
Вещественные константы с плавающей точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F: 1.2E-3f (число 0.0012), при записи константы типа double (64 бита) -1.34E5 (число -134000) наличие суффикса не требуется.
Символьные константы. Символьная константа char может представлять собой 16-битный символ Unicode (‘a’) или управляющие символы (возврат каретки (‘r’), перевод страницы (‘f’), горизонтальную табуляцию (‘t’), и другие), заключенный в апострофы.
Строковые константы — это последовательность символов, заключенная в кавычки, или константы string. Строка, состоящая из символов, например «Уpa!n Сегодня «Информатика». «
Логическая константа. Задается одним из двух значений true («истина») или false («ложь»). Используется в C# в логических выражениях, операторах условного перехода.
Именованные константы. Применяются для того, чтобы вместо значений констант, использовать в программе их имена, например константа р вещественная одинарной точности
const float p = 3.14159f
Переменная — именованная область памяти, для хранения данных определенного типа. При выполнении программы значение переменной величины можно изменять. Все переменные должны быть описаны явно, при описании переменной задается ее значение и тип. При объявлении переменной может быть задано начальное значение.
Имя переменной может содержать буквы, цифры и символ подчеркивания. Прописные и строчные буквы различаются. Например, переменные Long, LONG, long — три разных переменные.
Имя переменной может начинаться с буквы или знака подчеркивания, но не цифры. Имя переменной не должно совпадать с ключевыми словами. Не рекомендуется начинать имя с двух подчеркиваний (такие имена зарезервированы для служебного использования).
Правильные имена переменных: MaxLen, iMaxLen, Max_Len
Неправильные имена переменных: 2Len, Le#
Примеры описания переменных:
int a = -14; // числовая целая 32 бита
float c = -0.00151f; // числовая вещественная 32
double i = 1234.56789; // числовая вещественная 64
bool l = false; // логическая 16 бит
string name = «Petrov»; // строковая
Выражение — состоит из одного или более операндов (которые могут быть переменными, константами, функциями или символьными значениями), знаков операций и круглых скобок.
Примеры выражений:
2 * 2 + 1 полученное значение 5
1 / 2 — 3 полученное значение -3
1 / 2 — 3 полученное значение -2.5
Присвоение значения переменной представляет оператор присваивания (знаки основных операций приведены в таблице 1.2) : y = 2*x*x + 3*x — 1.
В этом примере сначала производятся вычисления правой части оператора присваивания « = », а затем полученное значение присваивается переменной у. Для текстовых данных выражение можно записать в следующем виде:
string kaf = «Кафедра» + «ПМиСИ»;
В этом примере строки по правую сторону от оператора присваивания объединяются, чтобы получить строку «Кафедра + ПМиСИ», которая затем присваивается переменной kaf.
Таблица 1.2 Знаки операций
Знак операции
Остаток от деления
Если в арифметических выражениях используются целые числа, то результатом вычислений будет целое число, и любой остаток от деления будет отброшен. Для получения остатка можно использовать соответствующую операцию %, например 10 % 3 возвращает остаток от целочисленного деления, равный 1.
Когда в арифметических выражениях используются числа с плавающей точкой, то результатом деления 10f / 3f будет число 3,333333.
С# содержит большое количество встроенных математических функций, которые реализованы в классе Math пространства имен System.
Рассмотрим краткое описание некоторых математических функций, подробнее с ними можно познакомиться в справочной системе VS или технической документации. Особое внимание следует обратить на типы операндов и результатов, т. к. каждая функция может иметь несколько перегруженных версий.
Замечание. Использование нескольких функций с одним и тем же именем, но с различными типами параметров, называется перегрузкой функции. Например, функция Math.Abs(), вычисляющая модуль числа, имеет 7 перегруженных версий: double Math.Abs (double x), float Math.
Abs (float x), int Math.Abs(int x), и т. д. (таблица 1.3)
Таблица 1.3 Математические функции
Math.Abs(вираз)
Источник: studfile.net
Пример работы С#+Json
Всем привет, не давно меня попросили настроить интеграцию с внешним сервисом, я приступил к работе и после подумал, возможно кому то может пригодиться такой функционал, т.к. по большей части все взаимодействия между системами не находящимися в одном домене или просто закрытые по соглашению с вендером, они частенько так делают, в договоре это обычно прописано. Но сейчас не об этом, в общем на примере, одного погодного сервиса покажу как обмениться данными через JSON между приложениями.
Кому лень читать, проект доступен для скачивания в конце статьи.
Остальные, поехали.
1) Заходим на сайт openweathermap.org и регистрируемся.
2) После регистрации вам придет письмо, примерно такое.
3) Что в нем важно, во первым там есть API Key, а во вторых пример обращения к удаленному сервису. Важный момент, если я правильно понял, у них какой то временной лаш между регистрацией нового ключа у себя и отправкой письма, письмо приходит практически сразу, а вот ключ точно будет действовать через 30 минут.
4) Переходим в Visual Studio и создаем WinForms проект.
5) Называем его WeatherJson
6) Переходим в код файла Form1.cs
7) Добавляем библиотеки System.Net и System.IO — первая нужна для отправки и получения запроса на сервер, вторая нужна для обработки ответа с сервера.
8) Также нам необходимо добавить к проекту внешнюю библиотеку Newtonsoft, для этого нужно сделать следующее:
9) Добавляем библиотеку Newtonsoft.Json;
10) Теперь переходим на форму и добавляем элемент TextBox, выставляем св-во Multiline значение true и растягиваем его по вертикали и горизонтали.
11) Теперь нажимаем на форму 2 раза левой кнопкой мыши, произойдет переход в код, там создаться метод private void Form1_Load(object sender, EventArgs e)
12) В нем пишем следующее:

13) Запускаем, проверяем — получаем ответ, такого вида:

14) Теперь давайте разберемся, что конкретно присылает сервер

***Важный момент с сайта необходимо скачать погодные иконки находятся здесь https://openweathermap.org/weather-conditions, положить нужно в проект(в папку debug).
15) Теперь нужно определить какого типа данные нам присылает сервер.

16) Теперь нам нужно создать все эти классы. Начнем с класса «coord»:
class coord < public double lat < get; set; >//Обязательно только public и только св-ва. public double lon < get; set; >//Обязательно только public и только св-ва. >
17) Теперь класс «weather»:
class weather < public int id < get; set; >public string main < get; set; >public string description < get; set; >public string icon < get; set; >public Bitmap Icon < get < return new Bitmap(Image.FromFile($»icon/.png»)); > > >
class main < public double temp < get; set; >public int pressure < get; set; >public int humidity < get; set; >public double temp_min < get; set; >public double temp_max < get; set; >>
class wind < public int speed < get; set; >public int deg < get; set; >>
20) Класс «clouds»
class clouds < public int all < get; set; >>
class sys < public int type < get; set; >public int id < get; set; >public double message < get; set; >public string country < get; set; >public long sunrise < get; set; >public long sunset < get; set; >>
22) Теперь основной класс «openweather» в который будем записывать ответ сервера.
class openweather < public coord coord < get; set; >public weather[] weather < get; set; >[JsonProperty(«base»)] //так как слово base является ключевым для C# необходимо воспользоваться параметром, он как бы подменяет имя. public string base1 < get; set;>public main main < get; set; >public int visibility < get; set; >public wind wind < get; set; >public clouds clouds < get; set; >public long dt < get; set; >public sys sys < get; set; >public int id < get; set; >public string name < get; set; >public int cod < get; set; >>
23) Возвращаемся в файл Form1.cs и изменяем его.
24) Добавляем на форму новые элементы для проверки — Кучу label и один panel для иконки.
25) Переходим обратно в Form1.cs и присваиваем значение label`ам и загоняем иконку в panel. Теперь файл Form1.cs выглядит так.
25) Запускаем, проверяем.
А теперь, так сказать для интерактива, могу вам посоветовать, сделать полноценную программу, с выводом полной информации.
1) Уберите textBox1, отладка завершена, он дольше не нужен.
2) Переведите фаренгейты в градусы.
3) Добавьте к каждому значению, единицы измерения.
4) Добавить таймер чтобы получать актуальную информацию о погоде, но значение нужно рассчитать так чтобы кол-во запросов не превышало лимит в 40к.месяц — отведенный для бесплатного использования.
Если нужно сделать еще примеры с использованием C#+JSON, но в другом разрезе, пишите в комментах, по возможности, реализую.
Источник: programming-csharp.ru
Как работать с SQLite в C#
Один из читателей моего сайта попросил в комментариях к статье «Как сохранять изображения в базу данных MS SQL и извлекать изображения из базы данных» написать статью по работе с SQLite. Отдохнув в отпуске и написав несколько статей по другой тематике решил написать статью и по работе с SQLite в C#.
Рассмотрим основные методы работы с базой данных SQLite: SELECT, CREATE, INSERT, UPDATE, DELETE. Чтобы материал не был обыденным мы рассмотрим добавление изображений и файлов в базу данных SQLite, а также их чтение из базы данных.
Сразу хочу сказать, что синтаксис похож на запросы MS SQL, а также подключение к базе данных происходит аналогично. Поэтому если вы работаете в C# с базами MS SQL, то вы прямо сейчас уже сможете самостоятельно работать с SQLite немного изменив свои запросы в коде.
Для работы с SQLite нам необходимо к проекту подключить пять NuGet пакетов, которые показаны на картинке:
Однако достаточно подключить один пакет, который выделен на картинке, и остальные пакеты подтянутся и установятся автоматически.
Прописываем для работы с SQLite:
using System.Data.SQLite;
Дополнительно к проекту подключаем:
using System; using System.IO; using System.Drawing; using System.Diagnostics; using System.Collections.Generic;
Далее по тексту будет код без методов, который вы прописываете у себя в нужных вам методах.
Создание базы данных SQLite
Создание таблицы в базе данных SQLite
Создадим таблицу, с которой будем в дальнейшем работать.
Добавление изображения в базу данных SQLite
Извлечение изображения из базы данных SQLite
Извлечение файла из базы данных SQLite
Комментариев в коде в начале будет минимум, так как здесь код аналогичный коду извлечения изображения из базы данных, а вот вторая часть кода отличается.
С помощью кода добавления и извлечения файла можно писать и считывать из базы данных любые файлы включая изображения.
Обновление записи в базе данных SQLite
Удаление записи в базе данных SQLite
Заключение
Как видим есть похожий код (DELETE и UPDATE), а есть отличающийся (SELECT сравните с другими).
На этом всё. На основании приведённых примеров вы сможете освоить работу с SQLite в C#.
Прикладываю проект с программой, которая может производить все описанные выше операции.
Предыдущая запись
Следующая запись
Большое спасибо за проделанную работу! Все очень доступно объяснили.
Здравствуйте.
Возникла проблема, в программе кнопки аля «создать базу данных» не работают
Захаров Виктор
Надо выбрать Изображение и Файл. Или же изменить поведение программы, чтобы не блокировались кнопки, если не выбраны Изображение и Файл, для этого измените поведение в методе «timer1_Tick».
Пример классный. Но не совсем понятно, почему для изображений использован тип BLOB, а для файлов BINARY. В чем разница?
А еще непонятно, зачем ставить пакеты EntityFramework, если он тут нигде не используется.
Или они тянутся по умолчанию и с этим ничего не поделать?
Захаров Виктор
Можно использовать BINARY. С большим размером могут возникнуть проблемы.
В SQLite для хранения больших данных я использую BLOB (относительно больших). При установке System.Data.SQLite остальные пакеты подтягивается автоматически.
Источник: victorz.ru