C# 30.09.2023
This commit is contained in:
		
							
								
								
									
										84
									
								
								C#/C#.md
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								C#/C#.md
									
									
									
									
									
								
							@@ -350,3 +350,87 @@ int Sum1(int a, int b) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
int Sum2(int a, int b) => a + b;
 | 
					int Sum2(int a, int b) => a + b;
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Рекурсия
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					int Factorial(int n) {
 | 
				
			||||||
 | 
					    if (n == 0) return 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return n * Factorial(n - 1);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Функции внути функций
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					int Sum2Arr(int[] arr1, int[] arr2) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int Sum(int[] arr) {
 | 
				
			||||||
 | 
					        int result = 0;
 | 
				
			||||||
 | 
					        foreach (int i in arr) {
 | 
				
			||||||
 | 
					            result += i;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return result;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return Sum(arr1) + Sum(arr2);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Enum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Enum используется для хранения состояния
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					enum Operation {
 | 
				
			||||||
 | 
					    Add,
 | 
				
			||||||
 | 
					    Sub
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Operation foo = Operation.Add;
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Тип констант перечисления
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					enum Time: byte {
 | 
				
			||||||
 | 
					    Morning,
 | 
				
			||||||
 | 
					    Afternoon,
 | 
				
			||||||
 | 
					    Evening,
 | 
				
			||||||
 | 
					    Night
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Тип обязательно должен быть целочисленным. По умолчанию int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Задание значения для Enum
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					enum DayTime {
 | 
				
			||||||
 | 
					    Morning = 3,
 | 
				
			||||||
 | 
					    Afternoon // 4
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## OOP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OOP - зло, C# - OOP -> C# - зло
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```C#
 | 
				
			||||||
 | 
					namespace Foo {
 | 
				
			||||||
 | 
					    internal class Enemy {
 | 
				
			||||||
 | 
					        public int hp;
 | 
				
			||||||
 | 
					        public int armor;
 | 
				
			||||||
 | 
					        public int damage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Move() {
 | 
				
			||||||
 | 
					            Console.WriteLine("I am moving");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Attack() {
 | 
				
			||||||
 | 
					            Console.WriteLine("I am attacking");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										106
									
								
								Java/Java.md
									
									
									
									
									
								
							
							
						
						
									
										106
									
								
								Java/Java.md
									
									
									
									
									
								
							@@ -74,3 +74,109 @@ Pattern - скомпилированный RegEx
 | 
				
			|||||||
Pattern p = Pattern.compile("java");
 | 
					Pattern p = Pattern.compile("java");
 | 
				
			||||||
p = Pattern.compile("java", Pattern.CASE_INSENSETIVE);
 | 
					p = Pattern.compile("java", Pattern.CASE_INSENSETIVE);
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Var
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Var выбирает тип по типу данных, который мы присваеваем. Нужно инициализировать при объявлении
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					var x = 5;
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Константы
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					В Java константы объявляются словом *final*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					final int LIMIT = 5;
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Массивы
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Объявлять массивы можно разными способами
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					int nums[] = new int[] {10, 20};
 | 
				
			||||||
 | 
					int[] nums = {10, 20, 30};
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Многомерный массив
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					int[][] nums = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Параметры переменной длины
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					static void sum(int ...nums) {
 | 
				
			||||||
 | 
					    int result = 0;
 | 
				
			||||||
 | 
					    for(int n: nums) {
 | 
				
			||||||
 | 
					        result += n;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    System.out.println(result);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Все обязательные параметры до параметрвов переменной длины
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Значения по умолчанию для параметров
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					**Их нету!!!**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Перегрузка методов
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Перегрузка позволяет определять функции с одинаковым именем, но с разными типами и/или кол-вом параметров.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					static int sum(int a, int b) {
 | 
				
			||||||
 | 
					    return a + b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static double sum(double a, double b) {
 | 
				
			||||||
 | 
					    return a + b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Если отличается только выходной тип, то останется только последняя имплементация
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					// Эту версию не получится вызвать
 | 
				
			||||||
 | 
					static int sum(int a, int b) {
 | 
				
			||||||
 | 
					    return a + b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Будет вызываться эта версия
 | 
				
			||||||
 | 
					static double sum(int a, int b) {
 | 
				
			||||||
 | 
					    return a + b;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Обработка ошибок
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### try-catch-finally
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					try {
 | 
				
			||||||
 | 
					    int[] a = new int[3];
 | 
				
			||||||
 | 
					    a[4] = 5;
 | 
				
			||||||
 | 
					} catch (Exception e) {
 | 
				
			||||||
 | 
					    e.printStackTrace();
 | 
				
			||||||
 | 
					} finally {
 | 
				
			||||||
 | 
					    System.out.println("Will always print this");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Throw
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					throw new Exception("Very important exception! Don't you dare not handle it");
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Throws
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Позволяет кинуть ошибку вверх по стаку
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```Java
 | 
				
			||||||
 | 
					public static void main(String[] args) throws Exception {}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								Java/foo.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								Java/foo.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					class Solution {
 | 
				
			||||||
 | 
					    public static void main(String[] args) {
 | 
				
			||||||
 | 
					        int[] nums1 = {1,2,3,0,0,0};
 | 
				
			||||||
 | 
					        int[] nums2 = {2,5,6};
 | 
				
			||||||
 | 
					        merge(nums1, 3, nums2, 3);
 | 
				
			||||||
 | 
					        for (Object object :nums1) {
 | 
				
			||||||
 | 
					            System.out.println(object);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static void merge(int[] nums1, int m, int[] nums2, int n) {
 | 
				
			||||||
 | 
					        int j = 0;
 | 
				
			||||||
 | 
					        for (int i = 0; i < nums1.length && j < n; i++) {
 | 
				
			||||||
 | 
					            if (nums1[i] <= nums2[j]) {
 | 
				
			||||||
 | 
					                    continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            insert(nums1, nums2[j], i);
 | 
				
			||||||
 | 
					            j++;
 | 
				
			||||||
 | 
					            i--;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    static void insert(int[] nums, int num, int pos) {
 | 
				
			||||||
 | 
					        if (pos == nums.length - 1) {
 | 
				
			||||||
 | 
					            nums[pos] = num;
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int i = pos; i < nums.length; i++) {
 | 
				
			||||||
 | 
					            int temp = nums[i];
 | 
				
			||||||
 | 
					            nums[i] = num;
 | 
				
			||||||
 | 
					            num = temp;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user