c# 기초구문 업데이트 완료
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
|
||||
class MyClass
|
||||
{
|
||||
// 1. delegate 선언
|
||||
private delegate void RunDelegate(int i);
|
||||
|
||||
private void RunThis(int val)
|
||||
{
|
||||
// 콘솔출력 : 1024
|
||||
Console.WriteLine("{0}", val);
|
||||
}
|
||||
|
||||
private void RunThat(int value)
|
||||
{
|
||||
// 콘솔출력 : 0x400
|
||||
Console.WriteLine("0x{0:X}", value);
|
||||
}
|
||||
|
||||
public void Perform()
|
||||
{
|
||||
// 2. delegate 인스턴스 생성
|
||||
RunDelegate run = new RunDelegate(RunThis);
|
||||
// 3. delegate 실행
|
||||
run(1024);
|
||||
|
||||
//run = new RunDelegate(RunThat); 을 줄여서
|
||||
//아래와 같이 쓸 수 있다.
|
||||
run = RunThat;
|
||||
|
||||
run(1024);
|
||||
}
|
||||
|
||||
public void PerformMultiCast(int val)
|
||||
{
|
||||
RunDelegate run = RunThis;
|
||||
run += RunThat;
|
||||
run(val);
|
||||
}
|
||||
}
|
||||
|
||||
class MySort
|
||||
{
|
||||
// 델리게이트 CompareDelegate 선언
|
||||
public delegate int CompareDelegate(int i1, int i2);
|
||||
|
||||
public static void Sort(int[] arr, CompareDelegate comp)
|
||||
{
|
||||
if (arr.Length < 2) return;
|
||||
Console.WriteLine("함수 Prototype: " + comp.Method);
|
||||
|
||||
int ret;
|
||||
for (int i = 0; i < arr.Length - 1; i++)
|
||||
{
|
||||
for (int j = i + 1; j < arr.Length; j++)
|
||||
{
|
||||
ret = comp(arr[i], arr[j]);
|
||||
if (ret == -1)
|
||||
{
|
||||
// 교환
|
||||
int tmp = arr[j];
|
||||
arr[j] = arr[i];
|
||||
arr[i] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
Display(arr);
|
||||
}
|
||||
static void Display(int[] arr)
|
||||
{
|
||||
foreach (var i in arr) Console.Write(i + " ");
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
internal class Program
|
||||
{
|
||||
|
||||
private static void Main(string[] args)
|
||||
{
|
||||
MyClass mc = new MyClass();
|
||||
mc.Perform();
|
||||
|
||||
(new Program()).Run();
|
||||
}
|
||||
|
||||
void Run()
|
||||
{
|
||||
int[] a = { 5, 53, 3, 7, 1 };
|
||||
|
||||
// 올림차순으로 소트
|
||||
MySort.CompareDelegate compDelegate = AscendingCompare;
|
||||
MySort.Sort(a, compDelegate);
|
||||
|
||||
// 내림차순으로 소트
|
||||
compDelegate = DescendingCompare;
|
||||
MySort.Sort(a, compDelegate);
|
||||
}
|
||||
|
||||
// CompareDelegate 델리게이트와 동일한 Prototype
|
||||
int AscendingCompare(int i1, int i2)
|
||||
{
|
||||
if (i1 == i2) return 0;
|
||||
return (i2 - i1) > 0 ? 1 : -1;
|
||||
}
|
||||
|
||||
// CompareDelegate 델리게이트와 동일한 Prototype
|
||||
int DescendingCompare(int i1, int i2)
|
||||
{
|
||||
if (i1 == i2) return 0;
|
||||
return (i1 - i2) > 0 ? 1 : -1;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user