개발꿈나무
8/10(화) 2일차 C#.Net 교육 본문
.Net 6.0 download
Download .NET 6.0 (Linux, macOS, and Windows)
.NET 6.0 downloads for Linux, macOS, and Windows. .NET is a free, cross-platform, open-source developer platform for building many different types of applications.
dotnet.microsoft.com
using System;
using static System.Console;
Person person = new();
//WriteLine(person.Age = 20} //mutable일 때 age 값 변경
WriteLine(person = person with {Age=20}); //immutable일 때 age 값 변경
record Person()
{
int age; //field(DB: column)
public int Age //property
{
get => age;
//set => age=value; //value: C# keyword
init => age=value;
// set -> mutable operation(변이), init -> immutable operation(불변이)
}
}
RECORD는 field(DB: column), property로 이루어진다.
property 부분에서 set을 사용한다면 mutable operation으로 값을 변경하고자 할 때 "[레코드변수명].[레코드속성명] = x"로 변경하면 되고, init을 사용한다면 imutable operation으로 값을 변경하고자 할 때 "[레코드변수명] = [레코드변수명] with [레코드속성명] = x" 이런 식으로 작성하면 된다.
-----
Value-Type(ex. struct): user-define-type(값으로 사용), 장점: light-weight technology, 단점: week-type service( 개발자가 모두 코딩해야 함)
Reference-Type(ex.class): user-define type(번지로 사용), 장점: strong-type technology, 단점: heavy-weight technology(시스템 overload, 비용 높음)
-> C# 9.0: struct 장점 + class 장점 = record service
-> C#10.0: record struct, record class
-----
static <=> instant
static = literal static construct service, 직접 호출 가능
instant = new(C# keyword) OR new() expression 사용하여 호출
-----
hoisting service(top-level language): 뒤쪽에 있는 함수를 앞 부분에서 사용가능
HeleleFunc(); //hoisting service
void HeleleFunc()
=> WriteLine($"Hello world");
-----
collee, coller(parameter) / colled(argument, augment)
parameter + argument -> factorizing service
----
Delegator
//func delegate service, javascript/python closure service
Func<int, int> AddCalc(int num1)
{
return n => num1 + n;
}
Func<int, int> SubCalc(int num1)
{
return n => num1 - n;
}
Func<int, int> MulCalc(int num1)
{
return n => num1 * n;
}
Func<int, int> DivCalc(int num1)
{
return n => num1 / n;
}
//Calculator2
Func<int, int> TenAddF = AddCalc(Ten());
Func<int, int> TenSubF = SubCalc(Ten());
Func<int, int> TenMulF = MulCalc(Ten());
Func<int, int> TenDivF = DivCalc(Ten());
//Calculator2
Func<int, int> FiveAddF = AddCalc(Five());
Func<int, int> FiveSubF = SubCalc(Five());
Func<int, int> FiveMulF = MulCalc(Five());
Func<int, int> FiveDivF = DivCalc(Five());
WriteLine(TenAddF(20));
WriteLine(TenSubF(20));
WriteLine(TenDivF(20));
WriteLine(TenMulF(20));
WriteLine(TenAddF(30));
WriteLine(TenSubF(30));
WriteLine(TenDivF(30));
WriteLine(TenMulF(30));
WriteLine(TenAddF(40));
WriteLine(TenSubF(40));
WriteLine(TenDivF(40));
WriteLine(TenMulF(40));
WriteLine(FiveAddF(20));
WriteLine(FiveSubF(20));
WriteLine(FiveDivF(20));
WriteLine(FiveMulF(20));
WriteLine(FiveAddF(30));
WriteLine(FiveSubF(30));
WriteLine(FiveDivF(30));
WriteLine(FiveMulF(30));
WriteLine(FiveAddF(40));
WriteLine(FiveSubF(40));
WriteLine(FiveDivF(40));
WriteLine(FiveMulF(40));
int Five() => 5;
int Ten() => 10;
-----
Celemony coding
//C# 6.0 later celemony coding
int Add(int num1, int num2)
=> num1 + num2;
int Substract(int num1, int num2)
=> num1 - num2;
int Multifly(int num1, int num2)
=> num1 * num2;
int Divide(int num1, int num2)
=> num1 / num2;
int One() => 1;
int Two() => 2;
int Three() => 3;
int Four() => 4;
int Five() => 5;
int Six() => 6;
int Seven() => 7;
int Eight() => 8;
int Nine() => 9;
int Ten() => 10;
-----
<LangVersion>preview</LangVersion>: .NET 최신 버전의 preview 기능도 사용하겠다.
<Nullable>enable</Nullable>: ??
-----
Data is Single source of Truth
int suja = 10;
int suja1 = suja;
ref int suja2 = ref suja; //managed pointer
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
suja2 = 20;
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
<result>
suja: 10, suja1: 10, suja2: 10
suja: 20, suja1: 10, suja2: 20
int suja = 10;
ref int suja1 = ref suja;
ref int suja2 = ref suja1; //managed pointer
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
suja2 = 20;
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
suja2 = TenFunc(ref suja);
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
//suja에 10을 더해서 return
int TenFunc(ref int suja)
{
return suja + 10;
}
<result>
suja: 10, suja1: 10, suja2: 10
suja: 20, suja1: 20, suja2: 20
suja: 30, suja1: 30, suja2: 30
int suja = 10;
ref int suja1 = ref suja;
ref int suja2 = ref suja1; //managed pointer
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
suja2 = 20;
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
suja2 = TenFunc(ref suja);
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}
");
ref int suja3 = ref HundredFunc(ref suja);
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}, suja3: {suja3}
");
suja3 = 12345;
WriteLine($@"
suja: {suja}, suja1: {suja1}, suja2: {suja2}, suja3: {suja3}
");
//suja에 10을 더해서 return(static return)
int TenFunc(ref int suja)
{
return suja + 10;
}
// Function Pointer
// reference return -> return문에서 수식 불가능
ref int HundredFunc(ref int suja)
{
suja += 100;
return ref suja;
}
<result>
suja: 10, suja1: 10, suja2: 10
suja: 20, suja1: 20, suja2: 20
suja: 30, suja1: 30, suja2: 30
suja: 130, suja1: 130, suja2: 130, suja3: 130
suja: 12345, suja1: 12345, suja2: 12345, suja3: 12345
Function pointer VS Pointer function
- Function pointer: HundredFunc(ref suja) = 54321; 가능, 함수명이 왼쪽에 오는 syntax 가능
'.Net 교육' 카테고리의 다른 글
8/17(월) 6일차 C#.Net 교육 (0) | 2021.08.17 |
---|---|
8/13(금) 5일차 C#.Net 교육 (0) | 2021.08.13 |
8/12(목) 4일차 C#.Net 교육 (0) | 2021.08.12 |
8/11(수) 3일차 C#.Net 교육 (0) | 2021.08.11 |
MVC application (0) | 2021.08.10 |