반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발꿈나무

8/10(화) 2일차 C#.Net 교육 본문

.Net 교육

8/10(화) 2일차 C#.Net 교육

HYOKYE0NG 2021. 8. 10. 16:43
반응형

.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;

 

 

-----

project file edit

<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
Comments