C# 30.09.2023

This commit is contained in:
StNicolay 2023-10-01 09:00:42 +00:00
parent 8007485316
commit 2a35336a4c
3 changed files with 227 additions and 0 deletions

View File

@ -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");
}
}
}
```

View File

@ -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
View 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;
}
}
}