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;
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Рекурсия
 | 
			
		||||
 | 
			
		||||
```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");
 | 
			
		||||
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