19. ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ž๋™ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ๋ฒ•
ยท
๐Ÿ’ป Programming Language/C#
namespace InterfacePropertyEx { // ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋กœํผํ‹ฐ interface IKeyValue { // ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ž๋™ ํ”„๋กœํผํ‹ฐ๋Š” C# ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค. // ๋”ฐ๋ผ์„œ, ํ•ด๋‹น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. string Key { get; set; } string Value { get; set; } } class KeyValue : IKeyValue { public string Key { get; set; } public string Value { get; set; } // ์ด๋ ‡๊ฒŒ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค์—์„œ ์ž๋™ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. // IKeyValue์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๊ณ  ์žˆ์Œ(์ฆ‰, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•ด์คŒ)..
18. C# 7.0์—์„œ ์ž๋™ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ๋ฒ•
ยท
๐Ÿ’ป Programming Language/C#
์ž๋™ ํ”„๋กœํผํ‹ฐ ๊ธฐ๋Šฅ์€ C# 3.0์—์„œ ๋„์ž…๋œ ๊ธฐ๋Šฅ ๊ธฐ์กด ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ ์ฝ”๋“œ public string Name { get { return name; } set { name = value; } } public DateTime EntryDate { get { return entryDate; } set { entryDate = value; } } C# 3.0 ์ดํ›„ ์ž๋™ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ ์ฝ”๋“œ public string Name { get; set; } public DateTime EntryDate { get; set; } C# 7.0 ๋ถ€ํ„ฐ๋Š” ์ž๋™ ํ”„๋กœํผํ‹ฐ์— ์ดˆ๊ธฐ๊ฐ’์ด ํ•„์š”ํ•  ๋•Œ ์ƒ์„ฑ์ž์— ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ดˆ๊ธฐ๊ฐ’์„ ๋ฐ”๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž ๊ธฐ์กด C# 3.0์—..
17. ํ”„๋กœํผํ‹ฐ(Property)์˜ ์ดํ•ด
ยท
๐Ÿ’ป Programming Language/C#
namespace PropertyEx { //ํ”„๋กœํผํ‹ฐ class DemoClass { private int demoField; public int getDemoField() { return demoField; } public void setDemoField(int demoField) { this.demoField = demoField; } } class Program { static void Main(string[] args) { DemoClass demoClass = new DemoClass(); demoClass.setDemoField(100); Console.WriteLine(demoClass.getDemoField()); } } } ๋ณดํ†ต Java๋‚˜ ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด ์—์„œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ getter..
16. ์ถ”์ƒํด๋ž˜์Šค(Abstract Class) ์ดํ•ด
ยท
๐Ÿ’ป Programming Language/C#
namespace AbstractClassEx { abstract class MyAbstractClass { protected void protectedMethod() { Console.WriteLine("์ถ”์ƒํด๋ž˜์Šค์˜ protected method"); } public void publicMethod() { Console.WriteLine("์ถ”์ƒํด๋ž˜์Šค์˜ public method"); } public abstract void abstractMethod(); // ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ์ถ”์ƒ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ public์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜ํ™˜ํƒ€์ž…๋งŒ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ // ์ถ”์ƒํด๋ž˜์Šค์—์„œ๋Š” ์ถ”์ƒ๋ฉ”์†Œ๋“œ์— ์ œํ•œ์ž ๋ฐ abstract ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์ค˜์•ผ ํ•œ๋‹ค. } class Child : MyAbstractClass { public o..
15. ์ธํ„ฐํŽ˜์ด์Šค(Interface) ์ดํ•ด
ยท
๐Ÿ’ป Programming Language/C#
namespace InterfaceEx { interface IMyInterfaceA { void output(); } interface IMyInterfaceB { void output(); } class MyClass : IMyInterfaceA, IMyInterfaceB // ๋‹ค์ค‘ ์ƒ์† { static void Main(string[] args) { MyClass myClass = new MyClass(); IMyInterfaceA ia = new MyClass(); ia.output(); IMyInterfaceB ib = new MyClass(); ib.output(); } void IMyInterfaceA.output() // ๋‹ค์ค‘์ƒ์†์„ ํ†ตํ•ด ๊ฐ€์ ธ์˜จ ํด๋ž˜์Šค๋“ค์˜ ๋ฉ”์†Œ๋“œ๋ช…์ด ๊ฐ™์€๊ฒฝ์šฐ์—๋Š” `ํด๋ž˜์Šค.๋ฉ”..
14. ํ™•์žฅ ๋ฉ”์†Œ๋“œ
ยท
๐Ÿ’ป Programming Language/C#
ํ™•์žฅ ๋ฉ”์†Œ๋“œ : ๊ธฐ์กด ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋Š” ๊ธฐ๋ฒ•, ์ƒ์†๊ณผ ๊ตฌ๋ณ„ํ•˜์—ฌ ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค. ์ƒ์†๊ณผ ๋‹ค๋ฅด๊ฒŒ "๊ธฐ์กดํด๋ž˜์Šค" ์— ํ™•์žฅ์„ ํ•ด์คŒ์œผ๋กœ์จ ๋ณธ๋ž˜ ์žˆ๋˜ ๊ธฐ๋Šฅ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์˜)Java์™€ ํ˜ผ๋™ํ•˜์ง€ ๋ง๊ฒƒ!!! Java๋Š” extends๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ƒ์†์„ ๋ฐ›๋Š”๋ฐ Java์—์„œ๋Š” ์ƒ์†์— ํ™•์žฅ์˜ ๊ฐœ๋…์ด ํฌํ•จ๋œ๋‹ค. ํ•˜์ง€๋งŒ C#์—์„œ๋Š” ์ƒ์†๊ณผ ํ™•์žฅ ๊ฐœ๋…์„ ๋ถ„๋ฆฌ์‹œํ‚จ๋‹ค. ####ํ™•์žฅ ๋ฉ”์†Œ๋“œ ์„ ์–ธ ํ˜•์‹ - static ํ‚ค์›Œ๋“œ๊ฐ€ ๋ถ™์–ด์•ผํ•œ๋‹ค. public static class ํด๋ž˜์Šค๋ช… { public static ๋ฐ˜ํ™˜ํ˜•์‹ ๋ฉ”์†Œ๋“œ๋ช…( this ๋Œ€์ƒํ˜•์‹(ํด๋ž˜์Šค, ํƒ€์ž…) ์‹๋ณ„์ž, ๋งค๊ฐœ๋ณ€์ˆ˜) { } } ํ™•์žฅ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ ์˜ˆ์ œ ์ฝ”๋“œ1 using System.Collections; namespace ExtansionE..
13. ํŠœํ”Œ ๋ฆฌํ„ด ํƒ€์ž…์„ ์ด์šฉํ•œ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉํ•˜๊ธฐ
ยท
๐Ÿ’ป Programming Language/C#
using System; namespace TupleEx2 { class Program { static void Main(string[] args) { // ํŠœํ”Œ ๋ฆฌํ„ดํƒ€์ž…์„ ์ด์šฉํ•œ ๋ฉ”์†Œ๋“œ ์„ ์–ธ (int count, int sum, double avg) getScore (List data) //ํŠœํ”Œ ๋ฆฌํ„ดํƒ€์ž…์„ ๋ช…์‹œ. { int count = 0, sum =0; double avg = 0; foreach (var item in data) { count++; sum += item; } avg = sum / count; return (count, sum, avg); } var data = new List {10, 11, 22, 33, 44}; var result = getScore (data); Console...