초기 커밋.

This commit is contained in:
2025-03-05 10:21:10 +09:00
parent 3471914e64
commit 15885a2286
55 changed files with 1716 additions and 0 deletions
+10
View File
@@ -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>
+7
View File
@@ -0,0 +1,7 @@
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
+10
View File
@@ -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>
+17
View File
@@ -0,0 +1,17 @@
internal class Program
{
private static void Main(string[] args)
{
// 코멘트: 한 라인 코멘트는 두개의 슬래시 사용함
int a = 1;
int b = 1; // 코멘트: 하나의 문장 뒤에 코멘트를 달 수 있음
/*
복수 라인에 대한 코멘트
int c;
int d;
*/
}
}
+10
View File
@@ -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>
+48
View File
@@ -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>
+43
View File
@@ -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();
}
}
+10
View File
@@ -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>
+41
View File
@@ -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;
}
}
+10
View File
@@ -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>
+57
View File
@@ -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);
+10
View File
@@ -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>
+52
View File
@@ -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());
}
}
}
}
+10
View File
@@ -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>
+37
View File
@@ -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 ?? "(널)";
+10
View File
@@ -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>
+70
View File
@@ -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;
}
}
}
+10
View File
@@ -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>
+73
View File
@@ -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);
}
+10
View File
@@ -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>
+50
View File
@@ -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
}
}
+10
View File
@@ -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>
+64
View File
@@ -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 사용한 메모리 정리 코드
}
}
}
+10
View File
@@ -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>
+21
View File
@@ -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;
}
}
}
+10
View File
@@ -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>
+45
View File
@@ -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());
}
}
+10
View File
@@ -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>
+56
View File
@@ -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;
}
}
}
+13
View File
@@ -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();
}
}
+10
View File
@@ -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>
+43
View File
@@ -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
}
}
+10
View File
@@ -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>
+65
View File
@@ -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);
}
}
+10
View File
@@ -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>
+19
View File
@@ -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);
}
}
}
+12
View File
@@ -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);
+10
View File
@@ -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>
+76
View File
@@ -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
//...
}
}
}
+10
View File
@@ -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>
+47
View File
@@ -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>
+24
View File
@@ -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() { }
}
}
+10
View File
@@ -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>
+113
View File
@@ -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;
}
}
+10
View File
@@ -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>
+61
View File
@@ -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);
}
}
+10
View File
@@ -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>
+58
View File
@@ -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
{
}
+10
View File
@@ -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>
+35
View File
@@ -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);
}
}
+10
View File
@@ -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>
+34
View File
@@ -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);
}
}
+175
View File
@@ -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