static void Main(string[] args) { //----- 1a ----// bool boolean = true; byte b = 0b1100_1001; char symbol = 'a'; double dbl = 12.8765567; float fl = 43.46F; int n = 15; long ln = 2345678; sbyte sb = -102; short sh = 3; uint un = 14; ulong uln = 3456789; ushort ush = 5; //-------- 1b ----// //---------- Явные приведения ---------------// n = (int)dbl; un = (char)symbol; ln = (short)sh; ush = (ushort)ln; fl = (float)dbl; //---------- Неявные приведения -------------// ln = n; sh = b; un = ush; n = sh; dbl = fl; //------ 1с -----// object valueIntInBox = n; int valueIntFromBox = (int)valueIntInBox; object valueSbyteInBox = sb; sbyte valueSbyteFromBox = (sbyte)valueSbyteInBox; //------ 1d ----// var x = "hello!"; Console.WriteLine("\n Тип неявно типизированной переменной: " + x.GetType()); //----- 1e ----// int?a = 10; if (a.HasValue) { Console.WriteLine($"a is {a.Value}"); } else { Console.WriteLine("a does not have a value"); } //---- 2a -----// string s1 = "foo"; string s2 = s1; string s3 = "foo"; string s4 = "bar"; Console.WriteLine(s1 == s3); Console.WriteLine(s1 == s4); Console.WriteLine((Object)s1 == (Object)s3); Console.WriteLine((Object)s1 == (Object)s2); //----- 2b ----// string str1 = "Minsk"; string str2 = "Gomel"; string str3 = "Brest"; Console.WriteLine("Обьединение строк: " + string.Concat(str1, str2)); Console.WriteLine("Выделение подстроки: " + str3.Substring(0, 2)); string text = "Hello! How do you do?"; Console.WriteLine("Разделение строки: " + text.Split(' ')); Console.WriteLine("Вставка строки: " + text.Insert(20, str1)); Console.WriteLine("Удаление подстроки: " + str2.Remove(2, 3)); //---- 2c ------// string EmptyString = ""; string NullString = null; if (String.Compare(EmptyString, NullString) != 0) { Console.WriteLine($"Строки {EmptyString} и {NullString} не равны"); } else { Console.WriteLine($"Строки {EmptyString} и {NullString} равны"); } //----- 2d ----// StringBuilder strb = new StringBuilder("Привет мир"); Console.WriteLine("Удаление: " + strb.Remove(4, 6)); Console.WriteLine("Добавление в начало: " + strb.Insert(0, ":)")); Console.WriteLine("Добавление в конец: " + strb.Append("ет мир")); //---- 3a ----// Console.WriteLine("Двумерный массив (матрица): "); int[,] myArr = new int[4, 4]; Random ran = new Random(); for (var i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { myArr[i, j] = ran.Next(1, 15); Console.Write("{0}\t", myArr[i, j]); } Console.WriteLine(); } //---- 3b ----// string[] strArr = { "string1", "string2", "string3", "string4" }; Console.Write("Содержимое массива: "); for (var i = 0; i < 4; i++) { Console.Write(strArr[i] + ", "); } Console.WriteLine("\nДлина массива: " + strArr.Length); Console.WriteLine("Выберите номер элнемента, который необходимо изменить: "); int choose; choose = Int32.Parse(Console.ReadLine()) - 1; Console.WriteLine("Вы выбрали элемент {0}, введите значение, на которое следует его заменить", strArr[choose]); strArr[choose] = Console.ReadLine(); Console.Write("\nГотово!\n Измененный массив: "); for (var i = 0; i < 4; i++) { Console.Write(strArr[i] + ", "); } Console.WriteLine("\n"); //---- 3c ----// int[][] myArr2 = new int[3][]; myArr2[0] = new int[2]; myArr2[1] = new int[3]; myArr2[2] = new int[4]; for (var i = 0; i < 2; i++) { Console.WriteLine("Введите {0}-й элемент 1-ой ступени: ", i); myArr2[0][i] = Int32.Parse(Console.ReadLine()); } Console.WriteLine("Массив 1-ой ступени: {0}, {1}", myArr2[0][0], myArr2[0][1]); for (var i = 0; i < 3; i++) { Console.WriteLine("Введите {0}-й элемент 2-ой ступени: ", i); myArr2[1][i] = Int32.Parse(Console.ReadLine()); } Console.WriteLine("Массив 2-ой ступени: {0}, {1}, {2}", myArr2[1][0], myArr2[1][1], myArr2[1][2]); for (var i = 0; i < 4; i++) { Console.WriteLine("Введите {0}-й элемент 3-ой ступени: ", i); myArr2[2][i] = Int32.Parse(Console.ReadLine()); } Console.WriteLine("Массив 3-ой ступени: {0}, {1}, {2}, {3}", myArr2[2][0], myArr2[2][1], myArr2[2][2], myArr2[2][3]); //---- 3d ----// object[] arrOfStr = { "array", "of", "strings" }; Console.WriteLine($"Массив строка типизированный неявно: {arrOfStr[0]} {arrOfStr[1]} {arrOfStr[2]}"); //---- 4a ----// (int IntValueOfTuple, string FirstStringValueOfTuple, char CharValueOFTuple, string SecondValueOfTuple, ulong UlongValueOfTuple)FirstTuple = (15, "Name", 'x', "Age", 23456); Console.WriteLine($"Кортеж целиком: {FirstTuple}"); Console.WriteLine($"1, 3, 4 элементы кортежа: {FirstTuple.IntValueOfTuple}, {FirstTuple.Item3}, {FirstTuple.Item4}"); // распаковка int IntValueOfTupleFromBox = FirstTuple.IntValueOfTuple; string FirstStringValueOfTupleFromBox = FirstTuple.FirstStringValueOfTuple; char CharValueOFTupleFromBox = FirstTuple.CharValueOFTuple; string SecondValueOfTupleFromBox = FirstTuple.SecondValueOfTuple; ulong UlongValueOfTupleFromBox = FirstTuple.UlongValueOfTuple; (int, string, char, string, ulong)SecondTuple = (245, "Age", 'x', "Sub", 87654); if (FirstTuple.CompareTo(SecondTuple) == 0) // сравнение 2-х кортежей с разным кол-вом и разными типами полей невозможно { Console.WriteLine($"Кортежи {FirstTuple} и {SecondTuple} равны"); } else { Console.WriteLine($"Кортежи {FirstTuple} и {SecondTuple} не равны"); } //---- 5 -----// int[] ArrayForMethod = { 2, 7, 214, 26, 12, 40 }; object MyLocalMethod(int[] LocalArr, string LocalStr) { (int maxElement, int minElement, int sumOfElements, char FirstCharOfString)LocalTuple; LocalTuple.maxElement = LocalArr[0]; LocalTuple.minElement = LocalArr[0]; LocalTuple.sumOfElements = 0; for (int i = 0; i < LocalArr.Length; i++) { if (LocalTuple.maxElement < LocalArr[i]) { LocalTuple.maxElement = LocalArr[i]; } if (LocalTuple.minElement > LocalArr[i]) { LocalTuple.minElement = LocalArr[i]; } LocalTuple.sumOfElements += LocalArr[i]; } LocalTuple.FirstCharOfString = LocalStr[0]; return(LocalTuple); } Console.WriteLine($"Созданный локальный метод и его значение: {MyLocalMethod(ArrayForMethod, "afgshtrhkskdgo")}"); }
public static void Main() { // 1 a /** Примитивные типы * 13 примитивных типов * * Подробнее: * https://docs.microsoft.com/ru-ru/dotnet/csharp/tour-of-csharp/types-and-variables * https://metanit.com/sharp/tutorial/2.1.php */ bool varBool = true; byte varByte = 1; char varChar = 'a'; short varShort = 123; int varInt = -1234; uint varUInt = 1234; long varLong = -12345; ulong varULong = 12345; ushort varUShort = 123; float varFloat = 1.1F; double varDouble = 1.31; decimal varDecimal = 123.1M; sbyte varSbyte = 5; // 1 b /** Явное и неявное приведение * Подробнее: * https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/types/casting-and-type-conversions * https://metanit.com/sharp/tutorial/3.11.php */ int valueInt = 5; sbyte valueSbyte = (sbyte)valueInt; // явное приведение short valueShort = 23; valueInt = valueShort; // неявное приведение // 1 c /** Упаковка и распаковка * Подробнее: * http://crypto.pp.ua/2011/02/upakovka-i-raspakovka-v-c/ * https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing */ object valueIntInBox = valueInt; int valueIntFromBox = (int)valueIntInBox; object valueSbyteInBox = valueSbyte; sbyte valueSbyteFromBox = (sbyte)valueSbyteInBox; // 1 d /** Неявное типизирование * Полезное: * https://habr.com/post/113586/ */ var Name = "Petar"; var Age = 25; WriteLine("\nЗадание 1d: \n"); WriteLine("Тип Name: " + Name.GetType()); WriteLine("Тип Age: " + Age.GetType()); // 1 e /** Nullable * Подробнее: * https://metanit.com/sharp/tutorial/2.17.php * https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/nullable-types/ */ WriteLine("\nЗадание 1е ----------------------------------------------------------\n"); int?valNull = null; if (valNull.HasValue) { WriteLine(valNull.Value); } else { WriteLine("valNull is equal to null"); } // 2 a ########################################################################################### WriteLine("\nЗадание 2a ----------------------------------------------------------\n"); string str1 = "ASDF"; string str2 = "asdf"; if (String.Compare(str1, str2) != 0) { WriteLine($"Строки {str1} и {str2} не равны"); } else { WriteLine($"Строки {str1} и {str2} равны"); } // 2 b ########################################################################################### WriteLine("\nЗадание 2b ----------------------------------------------------------\n"); string FirstString = "First String"; string SecondString = "Second String"; string ThirdString = "Third String"; WriteLine($"Сцепление трёх строк: {String.Concat(FirstString, SecondString, ThirdString)}"); WriteLine($"Скопированная строка: {String.Copy(FirstString)}"); char charSeporator = ' '; string[] s1 = SecondString.Split(charSeporator); WriteLine($"Разделённая строка: {s1[1]} {s1[0]}"); WriteLine($"Подстрока 3-й строки: {ThirdString.Substring(7)}"); WriteLine($"Удаление подстроки: {ThirdString.Remove(3)}"); WriteLine($"Вставка подстроки: {ThirdString.Insert(2, ThirdString.Substring(7))}"); // 2 c ########################################################################################### WriteLine("\nЗадание 2c ----------------------------------------------------------\n"); string EmptyString = ""; string NullString = null; if (String.Compare(EmptyString, NullString) != 0) { WriteLine($"Строки {EmptyString} и {NullString} не равны"); } else { WriteLine($"Строки {EmptyString} и {NullString} равны"); } // 2 d ########################################################################################### WriteLine("\nЗадание 2d ----------------------------------------------------------\n"); WriteLine($"Кол=во элементов в пустой строке: {EmptyString.Length} и в нулл строке: "); //{EmptyString.Length} StringBuilder BuildedString = new StringBuilder("A new string that is equivalent to this instance", 50); BuildedString.Remove(20, 5); WriteLine($"Строка после удаления: {BuildedString}"); BuildedString.Append("Appended text to the end"); WriteLine($"Строка после добавления текста в конец: {BuildedString}"); BuildedString.Insert(0, "Inserted text to the start"); WriteLine($"Строка после добавления текста в начало: {BuildedString}"); // 3 a ########################################################################################### WriteLine("\nЗадание 3a ----------------------------------------------------------\n"); int[,] matrix = { { 1, 2, 3 }, { 4, 5, 6 } }; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { Write(matrix[i, j] + " "); } WriteLine(); } // 3 b ########################################################################################### WriteLine("\nЗадание 3b ----------------------------------------------------------\n"); string[] ArrayOfStrings = { "some", "interest", "text", "or", "not" }; Write("Содержимое массива строк: "); for (int i = 0; i < ArrayOfStrings.Length; i++) { Write(ArrayOfStrings[i]); } WriteLine($" и его длина: {ArrayOfStrings.Length}"); int indexOfElement; Write("Введите индекс строки: "); indexOfElement = Int32.Parse(ReadLine()) - 1; Write("Введите строку, которой замените текущую в массиве: "); ArrayOfStrings[indexOfElement] = ReadLine(); Write("Изменённый массив: "); for (int i = 0; i < ArrayOfStrings.Length; i++) { Write(ArrayOfStrings[i] + " "); } WriteLine(); // 3 c ########################################################################################### WriteLine("\nЗадание 3c ----------------------------------------------------------\n"); double[][] jaggedArray = { new double[2], new double[3], new double[4] }; WriteLine("Введите зубчатый массив: "); for (int i = 0; i < 3; i++) { if (i == 0) { for (int j = 0; j < 2; j++) { jaggedArray[i][j] = Double.Parse(ReadLine()); } } else if (i == 1) { for (int j = 0; j < 3; j++) { jaggedArray[i][j] = Double.Parse(ReadLine()); } } else if (i == 2) { for (int j = 0; j < 4; j++) { jaggedArray[i][j] = Double.Parse(ReadLine()); } } } WriteLine("Ваш массив: "); foreach (double[] x in jaggedArray) { foreach (double b in x) { Write("\t" + b); } WriteLine(); } // 3 d ########################################################################################### WriteLine("\nЗадание 3d ----------------------------------------------------------\n"); object[] arrOfStr = { "array", "of", "strings" }; WriteLine($"Массив строка типизированный неявно: {arrOfStr[0]} {arrOfStr[1]} {arrOfStr[2]}"); // 4 a b c d ########################################################################################### WriteLine("\nЗадание 4 a b c d ----------------------------------------------------------\n"); (int IntValueOfTuple, string FirstStringValueOfTuple, char CharValueOFTuple, string SecondValueOfTuple, ulong UlongValueOfTuple)FirstTuple = (15, "Name", 'x', "Age", 23456); WriteLine($"Кортеж целиком: {FirstTuple}"); WriteLine($"1, 3, 4 элементы кортежа: {FirstTuple.Item1}, {FirstTuple.Item3}, {FirstTuple.Item4}"); // распаковка int IntValueOfTupleFromBox = FirstTuple.IntValueOfTuple; string FirstStringValueOfTupleFromBox = FirstTuple.FirstStringValueOfTuple; char CharValueOFTupleFromBox = FirstTuple.CharValueOFTuple; string SecondValueOfTupleFromBox = FirstTuple.SecondValueOfTuple; ulong UlongValueOfTupleFromBox = FirstTuple.UlongValueOfTuple; (int, string, char, string, ulong)SecondTuple = (245, "Age", 'x', "Sub", 87654); if (FirstTuple.CompareTo(SecondTuple) == 0) // сравнение 2-х кортежей с разным кол-вом и разными типами полей невозможно { WriteLine($"Кортежи {FirstTuple} и {SecondTuple} равны"); } else { WriteLine($"Кортежи {FirstTuple} и {SecondTuple} не равны"); } // 5 ########################################################################################### WriteLine("\nЗадание 5 ----------------------------------------------------------\n"); int[] ArrayForMethod = { 2, 7, 214, 26, 12, 40 }; object MyLocalMethod(int[] LocalArr, string LocalStr) { (int maxElement, int minElement, int sumOfElements, char FirstCharOfString)LocalTuple; LocalTuple.maxElement = LocalArr[0]; LocalTuple.minElement = LocalArr[0]; LocalTuple.sumOfElements = 0; for (int i = 0; i < LocalArr.Length; i++) { if (LocalTuple.maxElement < LocalArr[i]) { LocalTuple.maxElement = LocalArr[i]; } if (LocalTuple.minElement > LocalArr[i]) { LocalTuple.minElement = LocalArr[i]; } LocalTuple.sumOfElements += LocalArr[i]; } LocalTuple.FirstCharOfString = LocalStr[0]; return(LocalTuple); } WriteLine($"Созданный локальный метод и его значение: {MyLocalMethod(ArrayForMethod, "afgshtrhkskdgo")}"); }