C#

    48. System.Array

    C#์—์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ์ฒด์ด๋‹ค. ๋ฐฐ์—ด๋„ ๊ฐ์ฒด์ด๋ฉฐ, ๋ฐฐ์—ด์€ System.Array ํด๋ž˜์Šค์— ๋Œ€์‘๋œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋Š” int ๊ธฐ๋ฐ˜์˜ ๋ฐฐ์—ด์ด System.Array ํ˜•์‹์—์„œ ํŒŒ์ƒ๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ค€๋‹ค. using System; namespace DerivedFromArray { class MainApp { static void Main(string[] args) { int[] array = new int[] { 10, 30, 20, 7, 1 }; Console.WriteLine($"Type of array : {array.GetType()}"); Console.WriteLine($"Base type of array : {array.GetType().BaseType}"); } } } ์ถœ๋ ฅ ๊ฒฐ๊ณผ Type of array..

    47. ๋ฐฐ์—ด์“ฐ๋Š” ์ด์œ , ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

    ๋ณ€์ˆ˜๋ฅผ ๋ช…ํ•จ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜์€ ๋ช…ํ•จ์ง‘์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค! ๋ช…ํ•จ์ง‘์ด ์˜์—… ์‚ฌ์›์˜ ๋ช…ํ•จ ๊ด€๋ฆฌ ๊ณ ๋ฏผ์„ ๋œ์–ด์ฃผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜์€ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ณ ๋ฏผ์„ ๋œ์–ด์ค€๋‹ค. ๋ณ€์ˆ˜๋ฅผ 300๊ฐœ ์„ ์–ธํ•˜์ง€ ๋ง๊ณ  300๊ฐœ์˜ ์šฉ๋Ÿ‰์„ ๊ฐ€์ง„ ๋ณ€์ˆ˜๋ฅผ 1๊ฐœ๋งŒ ์„ ์–ธํ•˜๋„๋ก ํ•˜์ž. ๋ฐ์ดํ„ฐํ˜•์‹[] ๋ฐฐ์—ด ์ด๋ฆ„ = new ๋ฐ์ดํ„ฐํ˜•์‹[์šฉ๋Ÿ‰]; ๊ฐ™์€ ์„ฑ๊ฒฉ์˜ ๋ฐ์ดํ„ฐ๋ผ๋ฉด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฐฐ์—ด๋กœ ์ •์˜ํ•œ ๋‹ค์Œ for๋ฌธ์ด๋‚˜ foreach๋ฌธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. class MainApp { static void Main(string[] args) { float[] tests = new float[5]; tests[0] = 75; tests[1] = 69; tests[2] = 100; t..

    46. ์ฑ•ํ„ฐ9 ์—ฐ์Šต๋ฌธ์ œ

    ์—ฐ์Šต๋ฌธ์ œ1 using System; namespace Ex9_1 { class NameCard { private int age; private string name; public int Age { get; set; } public string Name { get; set; } } class MainApp { static void Main(string[] args) { NameCard ACard = new NameCard(); ACard.Age = 20; ACard.Name = "๊น€๊ฐ‘์ˆ˜"; Console.WriteLine($"{ACard.Name}์˜ ๋‚˜์ด๋Š” {ACard.Age}์ž…๋‹ˆ๋‹ค."); } } } ์ถœ๋ ฅ ๊ฒฐ๊ณผ ๊น€๊ฐ‘์ˆ˜์˜ ๋‚˜์ด๋Š” 20์ž…๋‹ˆ๋‹ค. ์—ฐ์Šต๋ฌธ์ œ2 using System; namespace Ex9_1 {..

    45. ์ถ”์ƒํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ

    ์ถ”์ƒํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค์ฒ˜๋Ÿผ ๊ตฌํ˜„๋œ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํ•œํŽธ, ์ธํ„ฐํŽ˜์ด์Šค์ฒ˜๋Ÿผ ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ํ”„๋กœํผํ‹ฐ๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.(์ถ”์ƒ ํ”„๋กœํผํ‹ฐ) ์ถ”์ƒ ํ”„๋กœํผํ‹ฐ ์—ญ์‹œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋‹ค๋ฅผ ๊ฒƒ์ด ์—†๋‹ค.(ํŒŒ์ƒ ํด๋ž˜์Šค๊ฐ€ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋„๋ก ๊ฐ•์ œ) ์ถ”์ƒ ํด๋ž˜์Šค์˜ ์ถ”์ƒ ํ”„๋กœํผํ‹ฐ๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ฒ˜๋Ÿผ ๊ตฌํ˜„์„ ๋น„์›Œ๋†“์€ ๊ฒƒ ๋งŒ์œผ๋กœ๋Š” ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.(C# ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  ๊ตฌํ˜„์„ ์ž๋™์œผ๋กœ ์ฑ„์›Œ ๋„ฃ์œผ๋ฏ€๋กœ... ์ถ”์ƒ ํ”„๋กœํผํ‹ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด abstract ํ•œ์ •์ž๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•œ๋‹ค! abstract class ์ถ”์ƒํด๋ž˜์Šค์ด๋ฆ„ { abstract ๋ฐ์ดํ„ฐํ˜•์‹ ํ”„๋กœํผํ‹ฐ์ด๋ฆ„ { get; set; } } ์ถ”์ƒ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์™€ ์ด๋ฅผ ์ƒ์†ํ•˜๋Š” ํŒŒ์ƒ ํด๋ž˜์Šค ์˜ˆ์ œ ์ฝ”๋“œ abstract class Product..

    44. ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ

    ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋ฉ”์†Œ๋“œ ๋ฟ๋งŒ ์•ˆ๋‹ˆ๋ผ ํ”„๋กœํผํ‹ฐ์™€ ์ธ๋ฑ์„œ๋„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋กœํผํ‹ฐ๋‚˜ ์ธ๋ฑ์„œ๋ฅผ ๊ฐ€์ง„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ '๋ฐ˜๋“œ์‹œ' ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์™€ ์ธ๋ฑ์„œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๋‹ค. (๋‹น์—ฐํ•œ ์ด์•ผ๊ธฐ์ด์ง€๋งŒ)์ธํ„ฐํŽ˜์ด์Šค์— ๋“ค์–ด๊ฐ€๋Š” ํ”„๋กœํผํ‹ฐ๋Š” ๊ตฌํ˜„์„ ๊ฐ–์ง€ ์•Š๋Š”๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ ์„ ์–ธ์€ ํด๋ž˜์Šค์˜ ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ ์„ ์–ธ๊ณผ ๊ทธ ๋ชจ์Šต์ด ๋™์ผํ•˜๋‹ค. ๋‹ค์Œ์€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํ”„๋กœํผํ‹ฐ ์„ ์–ธ ํ˜•์‹์ด๋‹ค. interface ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฆ„ { public ํ˜•์‹ ํ”„๋กœํผํ‹ฐ์ด๋ฆ„1 { get; set; } public ํ˜•์‹ ํ”„๋กœํผํ‹ฐ์ด๋ฆ„2 { get; set; } //... } ๋‹ค์Œ์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ด๋ฅผ ์ƒ์†ํ•˜๋Š” ํŒŒ์ƒ ํด๋ž˜์Šค์˜ ์˜ˆ์ด๋‹ค. interface Iproduct { string ProductName { ge..

    43. ๋ฌด๋ช… ํ˜•์‹

    ๋ฌด๋ช… ํ˜•์‹์€ ํ˜•์‹์˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ธ์Šคํ„ด์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์—... ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ๋ฌด๋ช… ํ˜•์‹์ด ์š”๊ธดํ•˜๋‹ค. (๋‘ ๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด class๋‚˜ struct๋ฅผ ์ด์šฉํ•ด ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ˜•์‹์„ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.) ๋ฌด๋ช… ํ˜•์‹์˜ ์˜ˆ var myInstance = new {Name="๋ฐ•์ƒํ˜„", Age="17"}; ๊ด„ํ˜ธ { ์™€ } ์‚ฌ์ด์— ์ž„์˜์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ์ ๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ์ƒˆ ํ˜•์‹์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋œ๋‹ค. ์œ„์™€ ๊ฐ™์ด ์„ ์–ธํ•œ ๋ฌด๋ช… ํ˜•์‹์˜ ์ธ์Šคํ„ด์Šค๋Š” ์—ฌ๋А ๊ฐ์ฒด์ฒ˜๋Ÿผ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Console.WriteLine(myInstance.Name, myInstance.Age); ๋ฌด๋ช… ํ˜•์‹์—์„œ ์ฃผ์˜ํ•  ์ ์€, ๋ฌด๋ช… ํ˜•์‹์˜ ํ”„๋กœํผํ‹ฐ์— ํ• ๋‹น๋œ ๊ฐ’์€ ๋ณ€๊ฒฝ๋ถˆ๊ฐ€๋Šฅํ•˜..

    42. [ํด๋ž˜์Šค/๋ ˆ์ฝ”๋“œ]๋กœ ๋ถˆ๋ณ€๊ฐ์ฒด ๊ตฌํ˜„ํ•˜๊ธฐ

    *๋ ˆ์ฝ”๋“œ ํŒŒํŠธ์ด์ง€๋งŒ C# 9.0 ์ด์ƒ๋ถ€ํ„ฐ ์ง€์›ํ•˜๋Š” ๊ฐœ๋…์ด๋ผ ๋ณธ ๋ธ”๋กœ๊ทธ์—์„œ๋Š” ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ”๋งŒ ๊ธฐ๋ก ๋‚จ๊ธฐ๊ธฐ๋กœ ๊ฒฐ์ •* ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ๋‚ด๋ถ€ ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์„ฑ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ๋Š” ๋ฐ์ดํ„ฐ ๋ณต์‚ฌ์™€ ๋น„๊ต๊ฐ€ ๋งŽ์ด ์ด๋ฃจ์–ด์ง„๋‹ค. ์ƒˆ๋กœ์šด ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๊ณ  (1)๊ธฐ์กด ์ƒํƒœ๋ฅผ ๋ณต์‚ฌํ•œ ๋’ค, ์ด ์ค‘(2) ์ผ๋ถ€๋ฅผ ์ˆ˜์ •ํ•ด์„œ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ , (3) ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด ๋‚ด์šฉ์„ ์ž์ฃผ ๋น„๊ตํ•œ๋‹ค. (๋ ˆ์ฝ”๋“œ๋Š” ๋ถˆ๋ณ€ ๊ฐ์ฒด์—์„œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ด๋ค„์ง€๋Š” ์ด ๋‘ ๊ฐ€์ง€ ์—ฐ์‚ฐ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก C# 9.0์—์„œ ๋„์ž…๋œ ํ˜•์‹์ด๋‹ค.) ์ฐธ์กฐ ํ˜•์‹์€ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ readonly๋กœ ์„ ์–ธํ•˜๋ฉด ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ฐ’ ํ˜•์‹์€ readonly struct๋กœ ๊ตฌ์กฐ์ฒด๋ฅผ ์„ ์–ธ..

    41. ํ”„๋กœํผํ‹ฐ์™€ ์ƒ์„ฑ์ž

    ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ์ฒด์˜ ๊ฐ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ... ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ• ๋ฐ”๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™” - ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœํผํ‹ฐ๋งŒ ๋„ฃ์–ด์„œ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋œ๋‹ค. ์ด๊ฒƒ์„ using System; namespace Property { class BirthdayInfo { public string Name{ get; set; } = "Unknown"; public DateTime Birthday { get; set; } = new DateTime(1,1,1); public int Age { get{ return new DateTime(DateTime.Now.Subtract(Birthday).Ticks).Year; } } } class MainApp { static void Main(string[] args) { Bi..

    40. ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ

    ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธํ˜• public class NameCard { private string name; private string phoneNumber; public string Name { get{ return name;} set{ name = value;} } public string PhoneNumber { get{ return phoneNumber; } set{ phoneNumber = value; } } } ์ž๋™๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ public class NameCard { public string Name { get; set; } public string PhoneNumber { get; set; } } ์—ฌ๊ธฐ์— C# 7.0 ๋ถ€ํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž๋™ ๊ตฌํ˜„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ ์–ธํ•จ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ..

    39. ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธํ˜• ์„ ์–ธ

    39. ํ”„๋กœํผํ‹ฐ ๊ธฐ๋ณธํ˜• ์„ ์–ธ

    https://youtu.be/QXakJJHkz8k ์ฐธ ๊ณ  ์˜ ์ƒ ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด๋ผ๋ฉด '์€๋‹‰์„ฑ'์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š๊ฒŒ ์˜ค์—ผ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. C++์ด๋‚˜ Java์—์„œ๋Š” private๋‚˜ protected ์ ‘๊ทผ ํ•œ์ •์ž๋ฅผ ์ด์šฉํ•ด์„œ ํด๋ž˜์Šค ๋‚ด์˜ ํ•„๋“œ๋ฅผ ์™ธ๋ถ€์—์„œ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๊ฐ์ถ”๊ณ , ์ด ํ•„๋“œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋“ค์„ public์œผ๋กœ ๋”ฐ๋กœ ์ œ๊ณตํ•œ๋‹ค. C# ํ”„๋กœ๊ทธ๋ž˜๋จธ๋„ ์ด ๋ฐฉ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋ฟ๋”๋Ÿฌ, ๋” ์šฐ์•„ํ•œ ์žฅ์น˜๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋ฐ”๋กœ 'ํ”„๋กœํผํ‹ฐ'์ด๋‹ค. ํ”„๋กœํผํ‹ฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ์€๋‹‰์„ฑ๊ณผ ํŽธ์˜์„ฑ, ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ๋ฅผ ๋‹ค ์žก์„ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฉด class MyClass { private int myField; } Java์—์„œ๋Š” get/set ๋ฉ”์†Œ๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ..