초기 커밋.
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,7 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello, World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,17 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함
|
||||||
|
int a = 1;
|
||||||
|
|
||||||
|
|
||||||
|
int b = 1; // 코멘트: 하나의 문장 뒤에 코멘트를 달 수 있음
|
||||||
|
|
||||||
|
/*
|
||||||
|
복수 라인에 대한 코멘트
|
||||||
|
int c;
|
||||||
|
int d;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,48 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
|
||||||
|
//리터널
|
||||||
|
/*
|
||||||
|
123 // int 리터럴
|
||||||
|
12.3 // double 리터럴
|
||||||
|
"A" // string 리터럴
|
||||||
|
'a' // char 리터럴
|
||||||
|
true // bool 리터럴
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Bool
|
||||||
|
bool b = true;
|
||||||
|
|
||||||
|
// Numeric
|
||||||
|
short sh = -32768;
|
||||||
|
int i = 2147483647;
|
||||||
|
long l = 1234L; // L suffix
|
||||||
|
float f = 123.45F; // F suffix
|
||||||
|
double d1 = 123.45;
|
||||||
|
double d2 = 123.45D; // D suffix
|
||||||
|
decimal d = 123.45M; // M suffix
|
||||||
|
|
||||||
|
// Char/String
|
||||||
|
char c = 'A';
|
||||||
|
string s = "Hello";
|
||||||
|
|
||||||
|
// DateTime 2011-10-30 12:35
|
||||||
|
DateTime dt = new DateTime(2011, 10, 30, 12, 35, 0);
|
||||||
|
|
||||||
|
//최대 최소
|
||||||
|
int iMax = int.MaxValue;
|
||||||
|
float fMin = float.MinValue;
|
||||||
|
|
||||||
|
//null
|
||||||
|
string sn;
|
||||||
|
sn = null;
|
||||||
|
|
||||||
|
// Nullable 타입
|
||||||
|
int? inl = null;
|
||||||
|
inl = 101;
|
||||||
|
|
||||||
|
bool? bnl = null;
|
||||||
|
|
||||||
|
//int? 를 int로 할당
|
||||||
|
Nullable<int> j = null;
|
||||||
|
j = 10;
|
||||||
|
int k = j.Value;
|
||||||
@@ -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,43 @@
|
|||||||
|
class CSVar
|
||||||
|
{
|
||||||
|
//필드 (클래스 내에서 공통적으로 사용되는 전역 변수)
|
||||||
|
int globalVar;
|
||||||
|
const int MAX = 1024;
|
||||||
|
|
||||||
|
public void Method1()
|
||||||
|
{
|
||||||
|
// 로컬변수
|
||||||
|
int localVar;
|
||||||
|
|
||||||
|
// 아래 할당이 없으면 에러 발생
|
||||||
|
localVar = 100;
|
||||||
|
|
||||||
|
Console.WriteLine(globalVar);
|
||||||
|
Console.WriteLine(localVar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CSVar2
|
||||||
|
{
|
||||||
|
// 상수
|
||||||
|
const int MAX_VALUE = 1024;
|
||||||
|
|
||||||
|
// readonly 필드
|
||||||
|
readonly int Max;
|
||||||
|
public CSVar2()
|
||||||
|
{
|
||||||
|
Max = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// 테스트
|
||||||
|
CSVar obj = new CSVar();
|
||||||
|
obj.Method1();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,41 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// 1차 배열
|
||||||
|
string[] players = new string[10];
|
||||||
|
string[] Regions = { "서울", "경기", "부산" };
|
||||||
|
|
||||||
|
// 2차 배열 선언 및 초기화
|
||||||
|
string[,] Depts = { { "김과장", "경리부" }, { "이과장", "총무부" } };
|
||||||
|
|
||||||
|
// 3차 배열 선언
|
||||||
|
string[,,] Cubes;
|
||||||
|
|
||||||
|
//Jagged Array (가변 배열)
|
||||||
|
//1차 배열 크기(3)는 명시해야
|
||||||
|
int[][] A = new int[3][];
|
||||||
|
|
||||||
|
//각 1차 배열 요소당 서로 다른 크기의 배열 할당 가능
|
||||||
|
A[0] = new int[2];
|
||||||
|
A[1] = new int[3] { 1, 2, 3 };
|
||||||
|
A[2] = new int[4] { 1, 2, 3, 4 };
|
||||||
|
|
||||||
|
A[0][0] = 1;
|
||||||
|
A[0][1] = 2;
|
||||||
|
|
||||||
|
int[] scores = { 80, 78, 60, 90, 100 };
|
||||||
|
int sum = CalculateSum(scores); // 배열 전달: 배열명 사용
|
||||||
|
Console.WriteLine(sum);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int CalculateSum(int[] scoresArray) // 배열 받는 쪽
|
||||||
|
{
|
||||||
|
int sum = 0;
|
||||||
|
for (int i = 0; i < scoresArray.Length; i++)
|
||||||
|
{
|
||||||
|
sum += scoresArray[i];
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,57 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
// 문자열(string) 변수
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
string s1 = "C#";
|
||||||
|
string s2 = "Programming";
|
||||||
|
|
||||||
|
// 문자(char) 변수
|
||||||
|
char c1 = 'A';
|
||||||
|
char c2 = 'B';
|
||||||
|
|
||||||
|
// 문자열 결합
|
||||||
|
string s3 = s1 + " " + s2;
|
||||||
|
Console.WriteLine("String: {0}", s3);
|
||||||
|
|
||||||
|
// 부분문자열 발췌
|
||||||
|
string s3substring = s3.Substring(1, 5);
|
||||||
|
Console.WriteLine("Substring: {0}", s3substring);
|
||||||
|
|
||||||
|
string s = "C# Studies";
|
||||||
|
|
||||||
|
// 문자열을 배열인덱스로 한문자 엑세스
|
||||||
|
for (int i = 0; i < s.Length; i++)
|
||||||
|
{
|
||||||
|
Console.WriteLine("{0}: {1}", i, s[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 문자열을 문자배열로 변환
|
||||||
|
string str = "Hello";
|
||||||
|
char[] charArray = str.ToCharArray();
|
||||||
|
|
||||||
|
for (int i = 0; i < charArray.Length; i++)
|
||||||
|
{
|
||||||
|
Console.WriteLine(charArray[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 문자배열을 문자열로 변환
|
||||||
|
char[] charArray2 = { 'A', 'B', 'C', 'D' };
|
||||||
|
s = new string(charArray2);
|
||||||
|
|
||||||
|
Console.WriteLine(s);
|
||||||
|
|
||||||
|
// 문자 연산
|
||||||
|
char c3 = 'A';
|
||||||
|
char c4 = (char)(c3 + 3);
|
||||||
|
Console.WriteLine(c3); // D 출력
|
||||||
|
|
||||||
|
//StringBuilder 사용
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for (int i = 1; i <= 26; i++)
|
||||||
|
{
|
||||||
|
sb.Append(i.ToString());
|
||||||
|
sb.Append(System.Environment.NewLine);
|
||||||
|
}
|
||||||
|
string sbstr = sb.ToString();
|
||||||
|
|
||||||
|
Console.WriteLine(sbstr);
|
||||||
@@ -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,52 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
enum City
|
||||||
|
{
|
||||||
|
Seoul, // 0
|
||||||
|
Daejun, // 1
|
||||||
|
Busan = 5, // 5
|
||||||
|
Jeju = 10 // 10
|
||||||
|
}
|
||||||
|
|
||||||
|
[Flags]
|
||||||
|
enum Border
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Top = 1,
|
||||||
|
Right = 2,
|
||||||
|
Bottom = 4,
|
||||||
|
Left = 8
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
City myCity;
|
||||||
|
|
||||||
|
// enum 타입에 값을 대입하는 방법
|
||||||
|
myCity = City.Seoul;
|
||||||
|
|
||||||
|
// enum을 int로 변환(Casting)하는 방법.
|
||||||
|
// (int)를 앞에 지정.
|
||||||
|
int cityValue = (int)myCity;
|
||||||
|
|
||||||
|
if (myCity == City.Seoul) // enum 값을 비교하는 방법
|
||||||
|
{
|
||||||
|
Console.WriteLine("Welcome to Seoul");
|
||||||
|
}
|
||||||
|
|
||||||
|
// OR 연산자로 다중 플래그 할당
|
||||||
|
Border b = Border.Top | Border.Bottom;
|
||||||
|
|
||||||
|
// & 연산자로 플래그 체크
|
||||||
|
if ((b & Border.Top) != 0)
|
||||||
|
{
|
||||||
|
//HasFlag()이용 플래그 체크
|
||||||
|
if (b.HasFlag(Border.Bottom))
|
||||||
|
{
|
||||||
|
// "Top, Bottom" 출력
|
||||||
|
Console.WriteLine(b.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,37 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
int x, y, z, b, c, d;
|
||||||
|
x = y = z = b = c = d = 2;
|
||||||
|
|
||||||
|
//산술연산자
|
||||||
|
int a = (x + y - z) * (b / c) % d;
|
||||||
|
|
||||||
|
//할당연산자
|
||||||
|
int sum = 0;
|
||||||
|
sum += a;
|
||||||
|
|
||||||
|
//증감연산자
|
||||||
|
sum++;
|
||||||
|
--sum;
|
||||||
|
|
||||||
|
//논리연산자
|
||||||
|
bool isOk = true;
|
||||||
|
if ((a > 1 && b < 0) || c == 1 || !isOk);
|
||||||
|
|
||||||
|
//비교연산자
|
||||||
|
if (a <= b)
|
||||||
|
{
|
||||||
|
int rst = b - a;
|
||||||
|
}
|
||||||
|
|
||||||
|
//비트연산자
|
||||||
|
byte b1 = 7;
|
||||||
|
int b4 = (b1 & 3) | 4 ^ 5;
|
||||||
|
|
||||||
|
//비트이동연산자
|
||||||
|
int i = 2;
|
||||||
|
i = i << 5;
|
||||||
|
|
||||||
|
//조건연산자
|
||||||
|
int val = (a > b) ? a : b;
|
||||||
|
string str = null;
|
||||||
|
string s = str ?? "(널)";
|
||||||
@@ -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,70 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static bool verbose = false;
|
||||||
|
static bool continueOnError = false;
|
||||||
|
static bool logging = false;
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
int a = -11;
|
||||||
|
int val;
|
||||||
|
if (a >= 0)
|
||||||
|
{
|
||||||
|
val = a;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
val = -a;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 출력값 : 11
|
||||||
|
Console.Write(val);
|
||||||
|
|
||||||
|
Console.WriteLine("과일 이름?");
|
||||||
|
var category = Console.ReadLine();
|
||||||
|
int price;
|
||||||
|
switch (category)
|
||||||
|
{
|
||||||
|
case "사과":
|
||||||
|
price = 1000;
|
||||||
|
break;
|
||||||
|
case "딸기":
|
||||||
|
price = 1100;
|
||||||
|
break;
|
||||||
|
case "포도":
|
||||||
|
price = 900;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
price = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"{category} 가격은 {price} 입니다.");
|
||||||
|
|
||||||
|
if (args.Length != 1)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Usage: MyApp.exe option");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string option = args[0];
|
||||||
|
switch (option.ToLower())
|
||||||
|
{
|
||||||
|
case "/v":
|
||||||
|
case "/verbose":
|
||||||
|
verbose = true;
|
||||||
|
break;
|
||||||
|
case "/c":
|
||||||
|
continueOnError = true;
|
||||||
|
break;
|
||||||
|
case "/l":
|
||||||
|
logging = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Console.WriteLine("Unknown argument: {0}", option);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,73 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
|
||||||
|
// for 루프
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
for (int x = 0; x < 10; x++)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Loop {0}", x);
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] array = new string[] { "AB", "CD", "EF" };
|
||||||
|
|
||||||
|
// foreach 루프
|
||||||
|
foreach (string s in array)
|
||||||
|
{
|
||||||
|
Console.WriteLine(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3차배열 선언
|
||||||
|
string[,,] arr = new string[,,] {
|
||||||
|
{ {"1", "2"}, {"11","22"} },
|
||||||
|
{ {"3", "4"}, {"33", "44"} }
|
||||||
|
};
|
||||||
|
|
||||||
|
//for 루프 : 3번 루프를 만들어 돌림
|
||||||
|
for (int i = 0; i < arr.GetLength(0); i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < arr.GetLength(1); j++)
|
||||||
|
{
|
||||||
|
for (int k = 0; k < arr.GetLength(2); k++)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(arr[i, j, k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//foreach 루프 : 한번에 3차배열 모두 처리
|
||||||
|
foreach (var s in arr)
|
||||||
|
{
|
||||||
|
Debug.WriteLine(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
int y = 1;
|
||||||
|
|
||||||
|
// while 루프
|
||||||
|
while (y <= 10)
|
||||||
|
{
|
||||||
|
Console.WriteLine(y);
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
y = 0;
|
||||||
|
// do ~ while 루프
|
||||||
|
do
|
||||||
|
{
|
||||||
|
Console.WriteLine(y);
|
||||||
|
y++;
|
||||||
|
} while (y < 10);
|
||||||
|
|
||||||
|
//Enumerable
|
||||||
|
List<char> keyList = new List<char>();
|
||||||
|
ConsoleKeyInfo key;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
key = Console.ReadKey();
|
||||||
|
keyList.Add(key.KeyChar);
|
||||||
|
} while (key.Key != ConsoleKey.Q); // Q가 아니면 계속
|
||||||
|
|
||||||
|
Console.WriteLine();
|
||||||
|
foreach (char ch in keyList) // 리스트 루프
|
||||||
|
{
|
||||||
|
Console.Write(ch);
|
||||||
|
}
|
||||||
@@ -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,50 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static IEnumerable<int> GetNumber()
|
||||||
|
{
|
||||||
|
yield return 10; // 첫번째 루프에서 리턴되는 값
|
||||||
|
yield return 20; // 두번째 루프에서 리턴되는 값
|
||||||
|
yield return 30; // 세번째 루프에서 리턴되는 값
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MyList
|
||||||
|
{
|
||||||
|
private int[] data = { 1, 2, 3, 4, 5 };
|
||||||
|
|
||||||
|
public IEnumerator<int> GetEnumerator()
|
||||||
|
{
|
||||||
|
int i = 0;
|
||||||
|
while (i < data.Length)
|
||||||
|
{
|
||||||
|
yield return data[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
foreach (int num in GetNumber())
|
||||||
|
{
|
||||||
|
Console.WriteLine(num);
|
||||||
|
}
|
||||||
|
|
||||||
|
// (1) foreach 사용하여 Iteration
|
||||||
|
var list = new MyList();
|
||||||
|
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
Console.WriteLine(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// (2) 수동 Iteration
|
||||||
|
IEnumerator<int> it = list.GetEnumerator();
|
||||||
|
it.MoveNext();
|
||||||
|
Console.WriteLine(it.Current); // 1
|
||||||
|
it.MoveNext();
|
||||||
|
Console.WriteLine(it.Current); // 2
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,64 @@
|
|||||||
|
class MyException : Exception
|
||||||
|
{
|
||||||
|
public string MyMessage = string.Empty;
|
||||||
|
public MyException(string message, Exception ex) :base(ex.Message)
|
||||||
|
{
|
||||||
|
MyMessage = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static void Step1()
|
||||||
|
{
|
||||||
|
throw new IndexOutOfRangeException();
|
||||||
|
}
|
||||||
|
static void Step2()
|
||||||
|
{
|
||||||
|
throw new FileNotFoundException();
|
||||||
|
}
|
||||||
|
static void Step3()
|
||||||
|
{
|
||||||
|
throw new Exception();
|
||||||
|
}
|
||||||
|
static bool Log(Exception ex)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"{DateTime.Now.ToString("yy/MM/dd HH:mm:ss")} - {ex.Message}");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 실행 문장들
|
||||||
|
Step1();
|
||||||
|
Step2();
|
||||||
|
Step3();
|
||||||
|
}
|
||||||
|
catch (IndexOutOfRangeException ex)
|
||||||
|
{
|
||||||
|
// 새로운 Exception 생성하여 throw
|
||||||
|
throw new MyException("Invalid index", ex);
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException ex)
|
||||||
|
{
|
||||||
|
bool success = Log(ex);
|
||||||
|
if (!success)
|
||||||
|
{
|
||||||
|
// 기존 Exception을 throw
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log(ex);
|
||||||
|
// 발생된 Exception을 그대로 호출자에 전달
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
//TODO 사용한 메모리 정리 코드
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,21 @@
|
|||||||
|
using MySystem.MySubSystem;
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Class1 cls = new MySystem.MySubSystem.Class1();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace MySystem.MySubSystem
|
||||||
|
{
|
||||||
|
public class Class1
|
||||||
|
{
|
||||||
|
public int Calculate(int a, int b)
|
||||||
|
{
|
||||||
|
int abs_Sum = System.Math.Abs(a) + Math.Abs(b);
|
||||||
|
return abs_Sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,45 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
// 구조체 정의
|
||||||
|
struct MyPoint
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
public int Y;
|
||||||
|
|
||||||
|
public MyPoint(int x, int y)
|
||||||
|
{
|
||||||
|
this.X = x;
|
||||||
|
this.Y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return string.Format("({0}, {1})", X, Y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class MyPointC
|
||||||
|
{
|
||||||
|
public int X;
|
||||||
|
public int Y;
|
||||||
|
|
||||||
|
public MyPointC(int x, int y)
|
||||||
|
{
|
||||||
|
this.X = x;
|
||||||
|
this.Y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return string.Format("({0}, {1})", X, Y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
// 구조체 사용
|
||||||
|
MyPoint pt = new MyPoint(10, 12);
|
||||||
|
Console.WriteLine(pt.ToString());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,56 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ExF.Class
|
||||||
|
{
|
||||||
|
public class MyCustomer
|
||||||
|
{
|
||||||
|
// 필드
|
||||||
|
private string name;
|
||||||
|
private int age;
|
||||||
|
|
||||||
|
// 이벤트
|
||||||
|
public event EventHandler NameChanged;
|
||||||
|
|
||||||
|
// 생성자 (Constructor)
|
||||||
|
public MyCustomer()
|
||||||
|
{
|
||||||
|
name = string.Empty;
|
||||||
|
age = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 속성
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return this.name; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (this.name != value)
|
||||||
|
{
|
||||||
|
this.name = value;
|
||||||
|
if (NameChanged != null)
|
||||||
|
{
|
||||||
|
NameChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int Age
|
||||||
|
{
|
||||||
|
get { return this.age; }
|
||||||
|
set { this.age = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 메서드
|
||||||
|
public string GetCustomerData()
|
||||||
|
{
|
||||||
|
string data = string.Format("Name: {0} (Age: {1})",
|
||||||
|
this.Name, this.Age);
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using ExF.Class;
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
MyCustomer customer1 = new MyCustomer();
|
||||||
|
MyCustomer customer2 = new();
|
||||||
|
var customer3 = new MyCustomer();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,43 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
MyClass cls = new();
|
||||||
|
cls.NullableTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
class MyClass
|
||||||
|
{
|
||||||
|
double _Sum = 0;
|
||||||
|
DateTime _Time;
|
||||||
|
bool? _Selected;
|
||||||
|
|
||||||
|
public void CheckInput(int? i, double? d, DateTime? time, bool? selected)
|
||||||
|
{
|
||||||
|
if (i.HasValue && d.HasValue)
|
||||||
|
this._Sum = (double)i.Value + (double)d.Value;
|
||||||
|
|
||||||
|
// time값이 있는 체크.
|
||||||
|
if (!time.HasValue)
|
||||||
|
throw new ArgumentException();
|
||||||
|
else
|
||||||
|
this._Time = time.Value;
|
||||||
|
|
||||||
|
// 만약 selected가 NULL이면 false를 할당
|
||||||
|
this._Selected = selected ?? false;
|
||||||
|
}
|
||||||
|
public void NullableTest()
|
||||||
|
{
|
||||||
|
int? a = null;
|
||||||
|
int? b = 0;
|
||||||
|
int result = Nullable.Compare<int>(a, b);
|
||||||
|
Console.WriteLine(result); //결과 -1
|
||||||
|
|
||||||
|
double? c = 0.01;
|
||||||
|
double? d = 0.0100;
|
||||||
|
bool result2 = Nullable.Equals<double>(c, d);
|
||||||
|
Console.WriteLine(result2); //결과 true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,65 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private void Calculate(int a)
|
||||||
|
{
|
||||||
|
a *= 2;
|
||||||
|
}
|
||||||
|
static double GetData(ref int a, ref double b)
|
||||||
|
{ return ++a * ++b; }
|
||||||
|
|
||||||
|
// out 정의
|
||||||
|
static bool GetData(int a, int b, out int c, out int d)
|
||||||
|
{
|
||||||
|
c = a + b;
|
||||||
|
d = a - b;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Calc(int a, int b, string calcType = "+")
|
||||||
|
{
|
||||||
|
switch (calcType)
|
||||||
|
{
|
||||||
|
case "+":
|
||||||
|
return a + b;
|
||||||
|
case "-":
|
||||||
|
return a - b;
|
||||||
|
case "*":
|
||||||
|
return a * b;
|
||||||
|
case "/":
|
||||||
|
return a / b;
|
||||||
|
default:
|
||||||
|
throw new ArithmeticException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
double Calc(params double[] doubles)
|
||||||
|
{
|
||||||
|
return doubles.Sum();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Program p = new Program();
|
||||||
|
|
||||||
|
int val = 100;
|
||||||
|
p.Calculate(val);
|
||||||
|
// val는 그대로 100
|
||||||
|
Console.WriteLine($"val = {val} ");
|
||||||
|
|
||||||
|
// ref 사용. 초기화 필요.
|
||||||
|
int x = 1;
|
||||||
|
double y = 1.0;
|
||||||
|
double ret = GetData(ref x, ref y);
|
||||||
|
Console.WriteLine($"x = {x}, y = {y} ");
|
||||||
|
|
||||||
|
// out 사용. 초기화 불필요.
|
||||||
|
int c, d;
|
||||||
|
bool bret = GetData(10, 20, out c, out d);
|
||||||
|
Console.WriteLine($"c = {c}, d = {d} ");
|
||||||
|
|
||||||
|
p.Calc(1, 2);
|
||||||
|
p.Calc(4, 3, "-");
|
||||||
|
p.Calc(1.1, 2.2, 3.3, 4.4);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ExI.Event
|
||||||
|
{
|
||||||
|
class MyClass
|
||||||
|
{
|
||||||
|
public event EventHandler<EventArgs>? Complished;
|
||||||
|
|
||||||
|
public void Calc(int complexity)
|
||||||
|
{
|
||||||
|
Thread.Sleep(complexity);
|
||||||
|
Complished?.Invoke(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
using ExI.Event;
|
||||||
|
|
||||||
|
var mycls = new MyClass();
|
||||||
|
mycls.Complished += Mycls_Complished;
|
||||||
|
|
||||||
|
void Mycls_Complished(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Console.WriteLine("작업끝");
|
||||||
|
}
|
||||||
|
|
||||||
|
mycls.Calc(2000);
|
||||||
@@ -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,76 @@
|
|||||||
|
#define TEST_ENV
|
||||||
|
#define STANDARD_EDITION
|
||||||
|
#define ENTERPRISE_EDITION
|
||||||
|
|
||||||
|
#if (!ENTERPRISE_EDITION)
|
||||||
|
#warning This class should be used in Enterprise Edition
|
||||||
|
#elif (!STANDARD_EDITION)
|
||||||
|
#error 최소 스탠다드 버젼은 되어야합니다.
|
||||||
|
#else
|
||||||
|
class EnterpriseClass
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
bool verbose = false;
|
||||||
|
// ...
|
||||||
|
|
||||||
|
#if (TEST_ENV)
|
||||||
|
Console.WriteLine("Test Environment: Verbose option is set.");
|
||||||
|
verbose = true;
|
||||||
|
#else
|
||||||
|
Console.WriteLine("Production");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (verbose)
|
||||||
|
{
|
||||||
|
//....
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class ClassA
|
||||||
|
{
|
||||||
|
#region Public Methods
|
||||||
|
public void Run() { }
|
||||||
|
public void Create() { }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public Properties
|
||||||
|
public int Id { get; set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Privates
|
||||||
|
private void Execute() { }
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma warning disable 3021
|
||||||
|
|
||||||
|
namespace App1
|
||||||
|
{
|
||||||
|
[System.CLSCompliant(false)]
|
||||||
|
class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
//...
|
||||||
|
|
||||||
|
#pragma warning disable
|
||||||
|
if (false)
|
||||||
|
{
|
||||||
|
Console.WriteLine("TBD");
|
||||||
|
}
|
||||||
|
#pragma warning restore
|
||||||
|
|
||||||
|
//...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,47 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
class MyClass
|
||||||
|
{
|
||||||
|
private const int MAX = 10;
|
||||||
|
private string name;
|
||||||
|
|
||||||
|
// 내부의 정수 배열 데이타
|
||||||
|
private int[] data = new int[MAX];
|
||||||
|
|
||||||
|
// 인덱서 정의. int 파라미터 사용
|
||||||
|
public int this[int index]
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (index < 0 || index >= MAX)
|
||||||
|
{
|
||||||
|
throw new IndexOutOfRangeException();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 정수배열로부터 값 리턴
|
||||||
|
return data[index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (!(index < 0 || index >= MAX))
|
||||||
|
{
|
||||||
|
// 정수배열에 값 저장
|
||||||
|
data[index] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
MyClass cls = new MyClass();
|
||||||
|
|
||||||
|
// 인덱서 set 사용
|
||||||
|
cls[1] = 1024;
|
||||||
|
|
||||||
|
// 인덱서 get 사용
|
||||||
|
int i = cls[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,24 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
var mycls = new MyClass();
|
||||||
|
mycls.Name = "철수";
|
||||||
|
mycls.Run(100);
|
||||||
|
//mycls._id = 100; //에러
|
||||||
|
//mycls.Execute() //에러
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal class MyClass
|
||||||
|
{
|
||||||
|
private int _id = 0;
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public void Run(int id) { }
|
||||||
|
|
||||||
|
protected void Execute() { }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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 @@
|
|||||||
|
// 베이스 클래스
|
||||||
|
public class Animal
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
public int Age { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
// 파생클래스
|
||||||
|
public class Dog : Animal
|
||||||
|
{
|
||||||
|
public void HowOld()
|
||||||
|
{
|
||||||
|
// 베이스 클래스의 Age 속성 사용
|
||||||
|
Console.WriteLine("나이: {0}", this.Age);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Bird : Animal
|
||||||
|
{
|
||||||
|
public void Fly()
|
||||||
|
{
|
||||||
|
Console.WriteLine("{0}가 날다", this.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class VirBase
|
||||||
|
{
|
||||||
|
public virtual void Say()
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SpeakerA : VirBase
|
||||||
|
{
|
||||||
|
public override void Say()
|
||||||
|
{
|
||||||
|
Console.WriteLine("World");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class PureBase
|
||||||
|
{
|
||||||
|
// abstract C#키워드
|
||||||
|
public abstract int GetFirst();
|
||||||
|
public abstract int GetNext();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DerivedA : PureBase
|
||||||
|
{
|
||||||
|
private int no = 1;
|
||||||
|
|
||||||
|
// override C#키워드
|
||||||
|
public override int GetFirst()
|
||||||
|
{
|
||||||
|
return no;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetNext()
|
||||||
|
{
|
||||||
|
return ++no;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MyBase
|
||||||
|
{
|
||||||
|
public string Name { get; set; }
|
||||||
|
protected int Age { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MyDerived : MyBase
|
||||||
|
{
|
||||||
|
public void Run()
|
||||||
|
{
|
||||||
|
// 파생클래스이므로 Age 사용 가능
|
||||||
|
Console.WriteLine("나이: {0}", this.Age);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
var dog = new Dog();
|
||||||
|
dog.Name = "멍멍이";
|
||||||
|
dog.Age = 10;
|
||||||
|
var bird = new Bird();
|
||||||
|
bird.Name = "삐약이";
|
||||||
|
|
||||||
|
dog.HowOld();
|
||||||
|
bird.Fly();
|
||||||
|
|
||||||
|
Animal[] animals = { dog, bird };
|
||||||
|
foreach (var animal in animals)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"{animal.Name}");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
public void Test(object obj)
|
||||||
|
{
|
||||||
|
// as 연산자
|
||||||
|
MyBase a = obj as MyBase;
|
||||||
|
|
||||||
|
// is 연산자
|
||||||
|
bool ok = obj is MyBase; //true
|
||||||
|
|
||||||
|
// Explicit Casting
|
||||||
|
MyBase b = (MyBase)obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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,61 @@
|
|||||||
|
public class MyClass
|
||||||
|
{
|
||||||
|
private int val = 1;
|
||||||
|
|
||||||
|
// 인스턴스 메서드
|
||||||
|
public int InstRun()
|
||||||
|
{
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 정적(Static) 메서드
|
||||||
|
public static int Run()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Client
|
||||||
|
{
|
||||||
|
public void Test()
|
||||||
|
{
|
||||||
|
// 인스턴스 메서드 호출
|
||||||
|
MyClass myClass = new MyClass();
|
||||||
|
int i = myClass.InstRun();
|
||||||
|
|
||||||
|
// 정적 메서드 호출
|
||||||
|
int j = MyClass.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// static 클래스 정의
|
||||||
|
public static class MyUtility
|
||||||
|
{
|
||||||
|
private static int ver;
|
||||||
|
|
||||||
|
// static 생성자
|
||||||
|
static MyUtility()
|
||||||
|
{
|
||||||
|
ver = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Convert(int i)
|
||||||
|
{
|
||||||
|
return i.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int ConvertBack(string s)
|
||||||
|
{
|
||||||
|
return int.Parse(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
string str = MyUtility.Convert(123);
|
||||||
|
int i = MyUtility.ConvertBack(str);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,58 @@
|
|||||||
|
class MyStack<T>
|
||||||
|
{
|
||||||
|
T[] _elements;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
|
public MyStack()
|
||||||
|
{
|
||||||
|
_elements = new T[100];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Push(T element)
|
||||||
|
{
|
||||||
|
_elements[++pos] = element;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T Pop()
|
||||||
|
{
|
||||||
|
return _elements[pos--];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 두 개의 서로 다른 타입을 갖는 스택 객체를 생성
|
||||||
|
MyStack<int> numberStack = new MyStack<int>();
|
||||||
|
MyStack<string> nameStack = new MyStack<string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// T는 Value 타입
|
||||||
|
class MyClassS<T> where T : struct { }
|
||||||
|
|
||||||
|
// T는 Reference 타입
|
||||||
|
class MyClassC<T> where T : class { }
|
||||||
|
|
||||||
|
// T는 디폴트 생성자를 가져야 함
|
||||||
|
class MyClassD<T> where T : new() { }
|
||||||
|
|
||||||
|
// T는 EventArgs의 파생클래스이어야 함
|
||||||
|
class MyClassMyBase<T> where T : EventArgs { }
|
||||||
|
|
||||||
|
// T는 IComparable 인터페이스를 가져야 함
|
||||||
|
class MyClass<T> where T : IComparable { }
|
||||||
|
|
||||||
|
// 좀 더 복잡한 제약들
|
||||||
|
class EmployeeList<T> where T : EventArgs, IDisposable, IComparable<T>, new()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// 복수 타입 파라미터 제약
|
||||||
|
class MyClass<T, U>
|
||||||
|
where T : class
|
||||||
|
where U : struct
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -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,35 @@
|
|||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
|
||||||
|
public class MyConnection : Component, IDbConnection, IDisposable
|
||||||
|
{
|
||||||
|
// IDbConnection을 구현
|
||||||
|
// IDisposable을 구현
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
private static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Hello, World!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IComparable
|
||||||
|
{
|
||||||
|
// 멤버 앞에 접근제한자 사용 안함
|
||||||
|
int CompareTo(object obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MyClass : IComparable
|
||||||
|
{
|
||||||
|
private int key;
|
||||||
|
private int value;
|
||||||
|
|
||||||
|
// IComparable 의 CompareTo 메서드 구현
|
||||||
|
public int CompareTo(object obj)
|
||||||
|
{
|
||||||
|
MyClass target = (MyClass)obj;
|
||||||
|
return this.key.CompareTo(target.key);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,34 @@
|
|||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
new Program().Test();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 델리게이트 정의
|
||||||
|
delegate int MyDelegate(string s);
|
||||||
|
|
||||||
|
void Test()
|
||||||
|
{
|
||||||
|
//델리게이트 객체 생성
|
||||||
|
MyDelegate m = new MyDelegate(StringToInt);
|
||||||
|
|
||||||
|
//델리게이트 객체를 메서드로 전달
|
||||||
|
Run(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 델리게이트 대상이 되는 어떤 메서드
|
||||||
|
int StringToInt(string s)
|
||||||
|
{
|
||||||
|
return int.Parse(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 델리게이트를 전달 받는 메서드
|
||||||
|
void Run(MyDelegate m)
|
||||||
|
{
|
||||||
|
// 델리게이트로부터 메서드 실행
|
||||||
|
int i = m("123");
|
||||||
|
|
||||||
|
Console.WriteLine(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,175 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.13.35806.99 d17.13
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex2.Comment", "Ex2.Comment\Ex2.Comment.csproj", "{4FC56CD5-D7C4-41D5-91B9-EC406225A715}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex1.HelloWorld", "Ex1.HelloWorld\Ex1.HelloWorld.csproj", "{39ABAB47-45AD-4E0C-866F-E12810D1CBFF}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex3.DataType", "Ex3.DataType\Ex3.DataType.csproj", "{B0DCAEBE-EBCC-4929-8B61-93E5853BA9F6}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex4.VariableConstant", "Ex4.VariableConstant\Ex4.VariableConstant.csproj", "{AB320A4A-367C-4052-850B-9D79E53A0421}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex5.Array", "Ex5.Array\Ex5.Array.csproj", "{5CC1E4EB-4C16-4B63-A38E-65E7F13AC08C}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex6.String", "Ex6.String\Ex6.String.csproj", "{6A2134F4-B4FD-4313-9DDB-EF9E426A96FF}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex7.Enum", "Ex7.Enum\Ex7.Enum.csproj", "{21FE3B80-B9E9-4406-B304-BEBBEC22B47B}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex8.Operators", "Ex8.Operators\Ex8.Operators.csproj", "{AB468895-F089-41AD-AB4F-4FB04045499E}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ex9.Condition", "Ex9.Condition\Ex9.Condition.csproj", "{76C94A31-D482-498B-AF5E-E239D306FC8A}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExA.Loop", "ExA.Loop\ExA.Loop.csproj", "{9F1FBAFD-B984-453C-B66B-28260E4CB711}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExB.Yield", "ExB.Yield\ExB.Yield.csproj", "{ACE6B8A9-D167-40F8-8362-5AC61999BEC3}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExC.Exception", "ExC.Exception\ExC.Exception.csproj", "{8C0FDE46-2F20-4F00-9410-B2C40A045CAE}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExD.NameSpace", "ExD.NameSpace\ExD.NameSpace.csproj", "{DEE4C4CC-1C75-485C-9444-EA648AD8467F}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExE.Struct", "ExE.Struct\ExE.Struct.csproj", "{F2020660-FB06-4A6D-8D91-025E4275FA9C}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExF.Class", "ExF.Class\ExF.Class.csproj", "{02FBBE64-492D-4273-8D49-B097071B38C0}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExG.Nullable", "ExG.Nullable\ExG.Nullable.csproj", "{CF200652-DD7F-4A69-96F6-DAD022778B6D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExH.Parameters", "ExH.Parameters\ExH.Parameters.csproj", "{1EA797AC-6CAB-444D-9A6E-271851CF07DE}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExI.Event", "ExI.Event\ExI.Event.csproj", "{1C0B9F76-E191-4AE0-9455-AAF59C67A2E5}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExJ.Preprocessor", "ExJ.Preprocessor\ExJ.Preprocessor.csproj", "{BFC645DA-ACD5-4FD1-95D1-57F2416509BF}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExK.Indexer", "ExK.Indexer\ExK.Indexer.csproj", "{EB61C562-A175-4A4B-A1A5-9432619B846D}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExL.AccessModifier", "ExL.AccessModifier\ExL.AccessModifier.csproj", "{249879AD-142F-45AE-AEE9-2E7C4DC1683C}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExM.Inheritance", "ExM.Inheritance\ExM.Inheritance.csproj", "{6CEE339D-335A-41FA-AC2E-2B0833D057FF}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExN.Static", "ExN.Static\ExN.Static.csproj", "{EAF589B1-F2CE-46CF-8309-E289FA0D52CB}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExO.Generic", "ExO.Generic\ExO.Generic.csproj", "{080C7BB8-7CA9-4A4E-9492-D58F633652F3}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExP.Interface", "ExP.Interface\ExP.Interface.csproj", "{51D81BEE-BA6A-4D96-9228-51A06D49FC0C}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExQ.Delegate1", "ExQ.Delegate1\ExQ.Delegate1.csproj", "{52E7A86E-720F-4111-AA1B-8C5FADE7E207}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{4FC56CD5-D7C4-41D5-91B9-EC406225A715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{4FC56CD5-D7C4-41D5-91B9-EC406225A715}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{4FC56CD5-D7C4-41D5-91B9-EC406225A715}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{4FC56CD5-D7C4-41D5-91B9-EC406225A715}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{39ABAB47-45AD-4E0C-866F-E12810D1CBFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{39ABAB47-45AD-4E0C-866F-E12810D1CBFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{39ABAB47-45AD-4E0C-866F-E12810D1CBFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{39ABAB47-45AD-4E0C-866F-E12810D1CBFF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{B0DCAEBE-EBCC-4929-8B61-93E5853BA9F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{B0DCAEBE-EBCC-4929-8B61-93E5853BA9F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{B0DCAEBE-EBCC-4929-8B61-93E5853BA9F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{B0DCAEBE-EBCC-4929-8B61-93E5853BA9F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{AB320A4A-367C-4052-850B-9D79E53A0421}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{AB320A4A-367C-4052-850B-9D79E53A0421}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{AB320A4A-367C-4052-850B-9D79E53A0421}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{AB320A4A-367C-4052-850B-9D79E53A0421}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{5CC1E4EB-4C16-4B63-A38E-65E7F13AC08C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{5CC1E4EB-4C16-4B63-A38E-65E7F13AC08C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{5CC1E4EB-4C16-4B63-A38E-65E7F13AC08C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{5CC1E4EB-4C16-4B63-A38E-65E7F13AC08C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6A2134F4-B4FD-4313-9DDB-EF9E426A96FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6A2134F4-B4FD-4313-9DDB-EF9E426A96FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6A2134F4-B4FD-4313-9DDB-EF9E426A96FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6A2134F4-B4FD-4313-9DDB-EF9E426A96FF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{21FE3B80-B9E9-4406-B304-BEBBEC22B47B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{21FE3B80-B9E9-4406-B304-BEBBEC22B47B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{21FE3B80-B9E9-4406-B304-BEBBEC22B47B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{21FE3B80-B9E9-4406-B304-BEBBEC22B47B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{AB468895-F089-41AD-AB4F-4FB04045499E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{AB468895-F089-41AD-AB4F-4FB04045499E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{AB468895-F089-41AD-AB4F-4FB04045499E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{AB468895-F089-41AD-AB4F-4FB04045499E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{76C94A31-D482-498B-AF5E-E239D306FC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{76C94A31-D482-498B-AF5E-E239D306FC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{76C94A31-D482-498B-AF5E-E239D306FC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{76C94A31-D482-498B-AF5E-E239D306FC8A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{9F1FBAFD-B984-453C-B66B-28260E4CB711}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9F1FBAFD-B984-453C-B66B-28260E4CB711}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9F1FBAFD-B984-453C-B66B-28260E4CB711}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9F1FBAFD-B984-453C-B66B-28260E4CB711}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{ACE6B8A9-D167-40F8-8362-5AC61999BEC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{ACE6B8A9-D167-40F8-8362-5AC61999BEC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{ACE6B8A9-D167-40F8-8362-5AC61999BEC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{ACE6B8A9-D167-40F8-8362-5AC61999BEC3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8C0FDE46-2F20-4F00-9410-B2C40A045CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8C0FDE46-2F20-4F00-9410-B2C40A045CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8C0FDE46-2F20-4F00-9410-B2C40A045CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8C0FDE46-2F20-4F00-9410-B2C40A045CAE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{DEE4C4CC-1C75-485C-9444-EA648AD8467F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{DEE4C4CC-1C75-485C-9444-EA648AD8467F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{DEE4C4CC-1C75-485C-9444-EA648AD8467F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{DEE4C4CC-1C75-485C-9444-EA648AD8467F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F2020660-FB06-4A6D-8D91-025E4275FA9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F2020660-FB06-4A6D-8D91-025E4275FA9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F2020660-FB06-4A6D-8D91-025E4275FA9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F2020660-FB06-4A6D-8D91-025E4275FA9C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{02FBBE64-492D-4273-8D49-B097071B38C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{02FBBE64-492D-4273-8D49-B097071B38C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{02FBBE64-492D-4273-8D49-B097071B38C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{02FBBE64-492D-4273-8D49-B097071B38C0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{CF200652-DD7F-4A69-96F6-DAD022778B6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{CF200652-DD7F-4A69-96F6-DAD022778B6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{CF200652-DD7F-4A69-96F6-DAD022778B6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{CF200652-DD7F-4A69-96F6-DAD022778B6D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1EA797AC-6CAB-444D-9A6E-271851CF07DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1EA797AC-6CAB-444D-9A6E-271851CF07DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1EA797AC-6CAB-444D-9A6E-271851CF07DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1EA797AC-6CAB-444D-9A6E-271851CF07DE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{1C0B9F76-E191-4AE0-9455-AAF59C67A2E5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{1C0B9F76-E191-4AE0-9455-AAF59C67A2E5}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{1C0B9F76-E191-4AE0-9455-AAF59C67A2E5}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{1C0B9F76-E191-4AE0-9455-AAF59C67A2E5}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{BFC645DA-ACD5-4FD1-95D1-57F2416509BF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{BFC645DA-ACD5-4FD1-95D1-57F2416509BF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{BFC645DA-ACD5-4FD1-95D1-57F2416509BF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{BFC645DA-ACD5-4FD1-95D1-57F2416509BF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{EB61C562-A175-4A4B-A1A5-9432619B846D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EB61C562-A175-4A4B-A1A5-9432619B846D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EB61C562-A175-4A4B-A1A5-9432619B846D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{EB61C562-A175-4A4B-A1A5-9432619B846D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{249879AD-142F-45AE-AEE9-2E7C4DC1683C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{249879AD-142F-45AE-AEE9-2E7C4DC1683C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{249879AD-142F-45AE-AEE9-2E7C4DC1683C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{249879AD-142F-45AE-AEE9-2E7C4DC1683C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6CEE339D-335A-41FA-AC2E-2B0833D057FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6CEE339D-335A-41FA-AC2E-2B0833D057FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6CEE339D-335A-41FA-AC2E-2B0833D057FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6CEE339D-335A-41FA-AC2E-2B0833D057FF}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{EAF589B1-F2CE-46CF-8309-E289FA0D52CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EAF589B1-F2CE-46CF-8309-E289FA0D52CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EAF589B1-F2CE-46CF-8309-E289FA0D52CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{EAF589B1-F2CE-46CF-8309-E289FA0D52CB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{080C7BB8-7CA9-4A4E-9492-D58F633652F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{080C7BB8-7CA9-4A4E-9492-D58F633652F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{080C7BB8-7CA9-4A4E-9492-D58F633652F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{080C7BB8-7CA9-4A4E-9492-D58F633652F3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{51D81BEE-BA6A-4D96-9228-51A06D49FC0C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{51D81BEE-BA6A-4D96-9228-51A06D49FC0C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{51D81BEE-BA6A-4D96-9228-51A06D49FC0C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{51D81BEE-BA6A-4D96-9228-51A06D49FC0C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{52E7A86E-720F-4111-AA1B-8C5FADE7E207}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A6D0271E-F7E3-439E-A090-22C197162036}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Reference in New Issue
Block a user