ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.08.2024

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

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Основы c#. Урок 1. Что такое c#?

Основы c#. Урок 2. Что такое net Runtime?

Основы c#. Урок 3. Первая программа на c#

Основы c#. Урок 4. Переменные языка c#

Основы c#. Урок 5. Логические операторы

Основы c#. Урок 6. Массивы в c#

Основы c#. Урок 7. Операторы if и switch

Основы c#. Урок 8. Циклы for и foreach

Основы c#. Урок 9. Цикл while

Основы c#. Урок 10. Классы в c#

Основы c#. Урок 11. Конструкторы классов

Основы c#. Урок 12. Наследование

Основы c#. Урок 13. Запись в экземпляр базового класса экземпляра производного

Основы c#. Урок 14. Вложенные классы

Основы c#. Урок 15. Перегрузка бинарных операторов

Основы c#. Урок 16. Перегрузка унарных операторов

Основы c#. Урок 17. Область видимости

Основы c#. Урок 18. Виртуальные функции

Основы c#. Урок 19. Абстрактные классы

Основы c#. Урок 20. Запрещение наследования или модификатор sealed

Основы c#. Урок 21. Статические переменные

Основы c#. Урок 22. Статические методы класса

Основы c#. Урок 23. Статические конструкторы

Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров

Основы c#. Урок 25. Передача параметров переменой длины

Основы c#. Урок 26. Строки (класс System.String)

Основы c#. Урок 27. Строки (класс StringBuilder)

Основы c#. Урок 28. Передача параметров по ссылке и по значению (ref и out)

Основы c#. Урок 29. Пример передачи по ссылке

Основы c#. Урок 30. Перегрузка

Основы c#. Урок 31. Функции класса System.Array

Основы c#. Урок 33. События

Основы c#. Урок 35. Введение в атрибуты

Основы c#. Урок 36. Пример пользовательского атрибута.

Основы c#. Урок 37. Параметры командной строки

Основы c#. Урок 38. Метод Main в отдельном классе

Основы c#. Урок 39. Форматированный вывод

Основы c#. Урок 40. Класс System.Object

Основы c#. Урок 41. Методы класса System.Object

Основы c#. Урок 42. Переопределяем методы класса System.Object

Основы c#. Урок 43. Константы

Основы c#. Урок 44. Модификаторы доступа

Основы c#. Урок 45. Ссылка на текущий экземпляр класса (this)

Основы c#. Урок 47. Работаем со специальными папками

Основы c#. Урок 48. Получаем список всех дисков

Основы c#. Урок 49. Ввод/вывод в c# (System.Io)

Основы c#. Урок 50. Классы для работы с папками и файлами

Основы c#. Урок 51. Класс Directory

Основы c# Урок 52. Класс File

Основы c# Урок 53. Класс FileSystemInfo

Основы c# Урок 54. Класс DirectoryInfo

Основы c# Урок 55. Перечисление FileAttributes

Основы c# Урок 56. Класс FileInfo

Основы c# Урок 57. Пример: получение имен всех подпапок

Основы c#. Урок 23. Статические конструкторы

Статическими к классе могут быть и конструкторы. Если обычный конструктор вызывается в момент создания экземпляра класса, то статический - в самом начале, т. е. перед созданием первого экземпляря класса.

В статическом конструкторе можно задать начальные значения для статических переменных класса. Вот пример:

classMyClass

{

public static int data;

//Статический конструктор

static MyClass()

{

data=10;

}

//Конструктор

public MyClass()

{

data++;

}

}

class Test

{

public static void Main()

{

MyClass a=new MyClass();

MyClass b=new MyClass();

System.Console.WriteLine(MyClass.data);

}

}

Указанный фрагмент выведет на экран 12. Действительно, сначала вызовется статический конструктор, который присвоит значение 10 перемнной data. Затем для каждого созданного экземпляра класса MyClass вызовется обычный конструктор, к котором переменная data увеличится каждый раз на 1.

Обратите внимание, что оба конструктора без параметра. Противоречия тут нет, так как один из них - статический, а другой - нет.

Основы c#. Урок 24. Закрытые конструкторы или классы без экземпляров

В C# нет глобальных переменных, функций или констант. Все они обязательно должны принадлежать некоторому классу. И если у вас имеется класс, содержащий в себе, например, некоторые нужные вам константы, то экземпляры такого класса вам не нужны (так как вы создали этот класс исключительно как хранилище). Чтобы запретить создание экземпляров класса, вы объявляете конструктор в нем как закрытый (то есть с модификатором private или вовсе без модификатора - так как отсутствие модификатора и подразумевает private). Это означает, что создать экземпляр такого класса не удастся (что нам и надо).

Вот пример такого класса:

namespacetest

{

//Класс без экземпляра

class MyClass

{

//Закрытый конструктор

privateMyClass()

{

}

public static int MyPhoneNumber=1239999;

}

class Test

{

public static void Main()

{

System.Console.WriteLine(MyClass.MyPhoneNumber);

}

}

}

Тут у нас класс MyClass имеет закрытый конструктор, так что создавать его экземпляры мы не можем. Так, следующий код будет ошибочным:


class Test

{

public static void Main()

{

MyClass a=new MyClass(); //ошибка!!!

}

}

Использовать же статические переменные и константы такого класса мы можем (так, мы выводим на экран константу MyPhoneNumber).

Разумеется, в таком классе может содержать и методы:

classMyClass

{

//Закрытый конструктор

privateMyClass()

{

}

public static int MyPhoneNumber=1239999;

public static int SomeNumber=1;

public static int GetSomeNumber(){

SomeNumber++;

return SomeNumber;

}

}

class Test

{

public static void Main()

{

System.Console.WriteLine(MyClass.GetSomeNumber()); //Выведется 2

System.Console.WriteLine(MyClass.GetSomeNumber()); //Выведется 3

}

}

Указанный фрагмент выведет 2 и 3.


Основы c#. Урок 25. Передача параметров переменой длины

В функцию можно передавать заранее неизвестное число параметров. Например, функция может складывать некоторое заранее неизвестное количество чисел и возвращать их сумму.

Вот конкретный пример реализации такой функции:

usingSystem;

classMyClass{

public static int Sum(params int[] args)

{

int res=0;

for(int i=0; i<args.GetLength(0); i++){

res+=args[i];

}

return res;

}

}

namespacetest

{

class Test

{

public static void Main()

{

System.Console.WriteLine(MyClass.Sum(1, 3));

System.Console.WriteLine(MyClass.Sum(12));

System.Console.WriteLine(MyClass.Sum(-1, 9, 2));

}

}

}

Здесь в классе MyClass мы объявляем статческую фунцкию Sum, в которую мы можем передавать переменное число параметров. Для этого в круглых скобках после имени функции мы пишем конструкцию

...

public static int Sum(params int[] args)

...

Синтаксис у нее такой - сначала пишем ключевое слово params, затем - тип параметров (int в данном случае), после которого ставим пустые квадратные скобки и в конце этой конструкции пишем произвольное имя параметра (в нашем примере он назван args).

В классе test мы испытываем наш класс MyClass, а именно, вызываем функцию Sum с разным числом параметров. Все работает как надо и наша программа покажет на экране 4, 12 и 10.

Основы c#. Урок 26. Строки (класс System.String)

Строки в C# - это экземпляры класса System.String. Вообще говоря в C# есть тип string, но класс System.String яляется более продвинутым, так что его использование часто оказывается более оправданным и простым. Этот класс имеет множество методов и свойств, некоторые из которых перечислены ниже:

Свойство Length. Возвращает длину строки. Пример использования:

String s="qqq";

intk=s.Length;//В k запишется 3

Compare. Статический метод, сравнивающий две строки. Возвращает 0, есть строки равны, отрицательное значение, если первая строка меньше второй и положительное значение, если первая строки больше второй (больше и меньше в алфавитном смысле, разумеется). Пример использования:

namespacetest

{

class Test

{

public static void Main()

{

String s1="arbour", s2="ace", s3="azote";

System.Console.WriteLine(String.Compare(s1, s1)); //Выдаст 0, т. к. "arbour" равно "arbour".


System.Console.WriteLine(String.Compare(s1, s2)); //Выдаст -1, т. к. "arbour" меньше "ace".

System.Console.WriteLine(String.Compare(s1, s3)); //Выдаст 1, т. к. "arbour" больше "azote".

}

}

}

Equals. Метод, возвращает true, если строки равны, false - если не равны. Может быть как статическим, так и не статическим. Пример использования:

String s1="qqq", s2="www";

System.Console.WriteLine(String.Equals(s1, s2).ToString());

//Статический метод

System.Console.WriteLine(System.Console.WriteLine(String.Equals(s1, s2).ToString());

//Не статический метод

System.Console.WriteLine(s1.Equals(s2).ToString());.ToString());

Метод Substring. Поволяет извлечь из строки подстроку. Пример использования:

String s1="abcdefg", s2;

s2=s1.Substring(3, 2);

System.Console.WriteLine(s2); //Напечатается "de"

Параметры тут такие: первый - с какого места извлекаем (нумерация с нуля) и второй - сколько символов извлекаем.

Метод Insert. Вставляет в строку другую строку. Пример использования:

String s1="abcdefg", s2;

s2=s1.Insert(1, "xyz");

System.Console.WriteLine(s2); //Напечатается "axyzbcdefg"

Первый параметр тут - это куда вставляем (нумерация, как всегда, с нуля), второй - что за строчку вставляем.

Метод IndexOf. Позволяет найти в строке подстроку. Пример использования:

String s1="abcabcab", s2="bc", s3="zzz";

System.Console.WriteLine(s1.IndexOf(s2)); //Напечатается 1

System.Console.WriteLine(s1.IndexOf(s3)); //Напечатается -1

Этот метод возвращает номер позиции, на котором в строке находится передаваемая в качестве параметра подстрока. Если такой построки нет, то возвращается -1.

Метод Replace. Производит замену в строке. Пример использования:

String s1="abcabcab", s2="bc", s3;

s3=s1.Replace(s2, "q");

System.Console.WriteLine(s3); //Напечатается aqaqab

Методы EndWith и StartsWith. Проверяют, не завершается ли или не начинается ли строка с или на заданную строку соответственно. Пример использования:

String s1="arbour";

if(s1.StartsWith("ar"))

System.Console.WriteLine("Строка начинается на\"ar\"");

else

System.Console.WriteLine("Строка не начинается на\"ar\"");

Методы ToUpperиToLowerпереводят строку в верхний или нижний регистр соответственно. Пример использования:

String s1="aRbRur";

s1=s1.ToLower();

Методы Trim, TrimEnds и TrimStart. Удаляют пробельные символы из начала и конца строки (Trim), только с конца строки (TrimEnds) и только с начала строки (TrimStart). Пример использваония:


String s1=" ar brur ";

System.Console.Write(s1.Trim());

Заметьте, что при изменении строки фактически старый экземпляр класса System.String уничтожается, и создается новый с там же именем и измененным содержанием. Это означает, что при интенсивной работе со строками программа может работеть не так быстро, как хотелось бы. Если мы не хотим, что бы каждый раз создавался новый экземпляр класса, то вместо класса System.String надо использовать класс StringBuilder, котрый мы рассмотрим на следующем уроке.