воскресенье, 30 января 2022 г.

Конструкторы в Си-шарп. Указатель this

 Конструкторы в Си-шарп. Указатель this

В этом уроке мы поговорим о таких важных членах класса, как конструкторы.

Конструктор – это метод класса, предназначенный для инициализации объекта при его создании. Инициализация – это задание начальных параметров объектов/переменных при их создании.

пятница, 28 января 2022 г.

Конструктор класса

 Конструктор класса В C# 

последнее обновление: 28 ноября 2018
Конструктор класса используется для инициализации полей класса

Класс в си шарп общие и расширенные понятия и представление

  Что такое класс C#? 


C# программу можно представить как взаимосвязанные между собой объекты.
Класс В C# описывает объект.

Как перечислить все элементы в перечислении в С#

 Как перечислить все элементы в перечислении в С#


  C#  
using System;

namespace ConsoleApp1
{
     enum BookType
     {
          Fantasy = 1,
          Prose = 2,
          History = 3,
          Child = 4
     }

     class Program
     {
          static void Main(string[] args)
          {
               BookType[] items = (BookType[]) Enum.GetValues(typeof(BookType));

               foreach (BookType item in items)
               {
                    string displayName = item.ToString();
                    long value = (long)item;

                    Console.WriteLine("name={0}, value={1}", displayName, value);
               }
          }
     }
}
Результат примера

Перечисление (enum)

 Перечисление (enum)

Перечисления - это набор констант.
Перечисления объявляется с помощью слова enum.

Наследование от класса abstract В C#. Используем abstract и override для методов класса

  Наследование от класса abstract В C#. Используем abstract и override для методов класса 

последнее обновление: 18 декабря 2018
  C#     Пример
abstract class Shape
{
     public abstract string GetName();
}

class Rectangle : Shape
{
     public override string GetName() { return "Rectangle"; }
}

class Program
{
     static void Main(string[] args)
     {
          Shape shape = new Rectangle();
          Console.WriteLine(shape.GetName());
          // на экране увидим
          // Rectangle
     }
}
На заметку!
abstract метод не может иметь модификатор доступа private

четверг, 27 января 2022 г.

Наследование класса от класса в C#. Используем слова virtual, override, sealed для методов класса

 Наследование класса от класса в C#. Используем слова virtual, override, sealed для методов класса 


sealed запрещает переопределение методов и свойств.
sealed применяется в паре с override (то есть используется только в переопределяемых методах).

Что такое абстрактный класс В C# ?

 Что такое абстрактный класс В C# ? 


Абстрактный класс это обычный класс объявленный с ключевым словом abstract.

Абстрактный класс или интерфейс?


Чем они отличаются между собой и в чём отличия?

В плане синтаксиса, интерфейс может содержать внутри себя только методы без реализации, свойства, события.

В то время как абстрактный класс поддерживает функционал любого другого класса (поля, реализованные методы, делегаты, события, свойства, конструкторы...), но запрещает создавать экземпляры своего типа. 

Также нужно помнить, что C# не поддерживает множественное наследование и, соответственно, унаследоваться от нескольких классов не получиться, а вот от нескольких интерфейсов - да.

Расширение методов extension methods

 

С# extension methods: простой, но полезный пример

.NET *
Что такое extension methods? Это возможность расширить функционал имеющегося класса добавив в него свой статичный метод. 

Статика в C#

 

Статика в C#

.NET *C# *
Tutorial
Волею судьбы в последние годы у меня появилось ещё одно очень увлекательное хобби – учить. Я занимаюсь обучением людей, которые хотят стать программистами C#. Люди приходят разные: технари, гуманитарии, кто-то по своей воле, кого-то направляют от организаций. Не смотря на различные уровни, мне нужно их обучать. Поэтому я стараюсь постоянно обновлять и улучшать свои обучающие материалы. В связи с чем, пришёл к выводу: «А не плохо было бы оформить материалы в текстовом виде, чтобы ими было удобно пользоваться». Под катом я выложил как пример одну из недавно оформленных лекций.

Курсы список



Самый крутой бесплатный ресурс по обучению программированию с нуля

 

Open source *Программирование *Учебный процесс в IT Научно-популярное
image


Куинси Ларсон, основатель бесплатной образовательной платформы для программистов freeCodeCamp

понедельник, 24 января 2022 г.

Потоки в C# для начинающих: разбор, реализация, примеры

Потоки в C# для начинающих: разбор, реализация, примеры


В данной статье мы расскажем, что такое потоки в C#, приоритеты потоков и их типы, покажем, как работать с потоками и как ими управлять, создадим несколько наглядных примеров, объясняющих их работу.

Оглавление:
 Что такое потоки в C#
 Реализация потоков в C#
   – Как создавать потоки в C#
   – Как запускать потоки в C#
   – Как приостановить потоки в C#
   – Приоритеты потоков в C#
   – Изменение типов потоков в C#
 Примеры работы потоков в C#
   – Программа №1: как работают потоки в C#
   – Программа №2: приоритеты потоков в C#
   – Программа №3: типы потоков в C#

среда, 19 января 2022 г.

25 сервисов для мониторинга сайтов, проверки работоспособности и не только

 

После создания сайта — по мере продвижения, увеличения посещаемости, наполнения контентом — важно следить за такими показателями, как время безотказной работы, скорость загрузки страниц и др.

Компания TeamViewer (одна из участников подборки) провела исследование по теме и выяснила: 40 % пользователей отказываются от посещения сайта, если он загружается дольше 3 секунд. 

вторник, 11 января 2022 г.

Анонимные методы и лямбда-выражения в C#

 

Анонимные методы и лямбда-выражения в C#

Анонимные методы и лямбда-выражения

Доброго времени суток! В этой статье я расскажу об использовании анонимных методов и лямбда-выражений в связке с делегатами.

понедельник, 10 января 2022 г.

Анонимные методы

Иными словами, единственным основанием для существования Анонимного метода служит то обстоятельство, что он может быть  вызван посредством делегата, но сам он не вызывается вообще. 

воскресенье, 9 января 2022 г.

Action , Predicate , Func

Чтобы лишь программиста C# необходимости для каждого случая создавать собственные делегаты в библиотеке классов NET.Framework определены и реализованы несколько типов. 

Самые распространенные из них - Action <T>, Predicate <T>, Func <T>. 

Символ Т в имени делегата означает его обобщенную форму, маскирует собой любой тип, переданный делегату.

Когда вам придётся объявлять делегат

 Для полноты, вот (надеюсь, полный) список вариантов, когда вам придётся объявлять делегат:

  • Когда список аргументов чересчур длинный (для .NET 4+ более 16 аргументов, для .NET 3.5 больше 4 аргументов)
  • Когда ваши аргументы содержат refout или params.
  • Если ваш делегат рекурсивен (например delegate D D(D d)). Как ни странно, такие штуки иногда нужны.
  • Если вы хотите дать «говорящие» имена аргументам вашего делегата (аргументы Action/Func называются arg1arg2 и т. д.).

Операторы ref и out

 Передача параметров в метод по ссылке. Операторы ref и out


В C# значения переменных по-умолчанию передаются по значению (в метод передается локальная копия параметра, который используется при вызове). 

Это означает, что мы не можем внутри метода изменить параметр из вне:

public static void ChangeValue(object a)
{
   a = 2;
}

static void Main(string[] args)
{
   int a = 1;
   ChangeValue(a);
   Console.WriteLine(a); // 1
   Console.ReadLine();
}

Чтобы передавать параметры по ссылке, и иметь возможность влиять на внешнюю переменную, используются ключевые слова ref и out.

Ссылочные типы



Переменная ссылочного типа содержит не данные, а ссылку на них. Сами данные в этом случае уже хранятся в куче. Куча - это область памяти, в которой размещаются управляемые объекты, и работает сборщик мусора. Сборщик мусора освобождает все ресурсы и объекты, которые уже не нужны.

К ссылочным типам относятся:

- Классы (class);
- Интерфейсы (interface);
- Делегаты (delegate);
- Тип object;
- Тип string.

Горячие клавиши

 Ctrl + F5 запуск приложения без отладки

    F5 запуск приложения с отладкой
    Shift + F5 остановка отладки
    F9 вставка / удаление точки останова
    F10 шаг без захода в метод (во время отладки)
    F11 шаг с заходом в метод (во время отладки)
    Ctrl + Shift + F5 перезапуск отладки
    Shift + F11 шаг с выходом из метода (во время отладки)
    Ctrl + m + m свернуть код метода, когда курсор находится в каком-то месте этого кода; чтобы развернуть его, используйте ту же комбинацию клавиш

ОБЪЯВЛЕНИЕ МЕТОДОВ И ФУНКЦИЙ

 

Содержание:

  • Методы позволяют нам инкапсулировать поведение и функциональность в объекты, которые мы создаем в нашем коде.

Func делегат пример

Ну, есть ключевое слово delegate — это описание сигнатуры функции, т. е., её списка параметров и типа возвращаемого значения. Используется так:

public delegate bool MyPredicate(int x);

Им можно пользоваться так:

private bool IsOdd(int i) { return i % 2 != 0; }

private Analyze(MyPredicate p, int x)
{
    bool result = p(x);
    if (result)
        Console.WriteLine("found!");
}

Analyze(IsOdd, 1); // печатает "found!"

С другой стороны, есть готовые, предопределённые сигнатуры функций (Func<TArg1, TArg2, ..., TResult> с возвращаемым значением, Action<TArg1, Targ2, ...> без). 

То есть, можно не определять делегат самому, а воспользоваться готовыми Func и Action


Аналогичный пример:

private bool IsOdd(int i) { return i % 2 != 0; }

private Analyze(Func<int, bool> p, int x)
{
    bool result = p(x);
    if (result)
        Console.WriteLine("found!");
}

Analyze(IsOdd, 1); // печатает "found!"

Если для вашей сигнатуры подходит Func или Action, особого смысла определять свой делегат нет. 


Или есть, если вы хотите дать своему делегату более подходящее имя, чем просто Func, и хотите подчеркнуть его семантику.


Существуют случаи, когда свой делегат всё же необходимо объявлять. Например, наличие out- и ref-параметров:

public delegate Updater(ref int x); // невозможно выразить через Func

Паттерн 'Репозиторий' в ASP.NET

  Последнее обновление: 1.11.2015         Одним из наиболее часто используемых паттернов при работе с данными является паттерн 'Репозито...