์ค์ฒฉ ํด๋์ค๋ ํด๋์ค ์์ ์ ์ธ๋์ด ์๋ ํด๋์ค์ด๋ค.
ํด๋์ค ์์ ํด๋์ค๋ฅผ ์ ์ธํ๋ ๊ฒ์ด ์ ๋ถ์ด๋ค.
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ๋ ๋ณดํต ํด๋์ค์ ๋๊ฐ๋ค.
์ค์ฒฉํด๋์ค๋ ์์ ์ด ์์๋ ํด๋์ค์ ๋ฉค๋ฒ์ ์์ ๋กญ๊ฒ ์ ๊ทผํ ์ ์๋ค.(private ๋ฉค๋ฒ๋!)
์ค์ฒฉํด๋์ค๋ฅผ ์ฐ๋ ์ด์
- ํด๋์ค ์ธ๋ถ์ ๊ณต๊ฐํ๊ณ ์ถ์ง ์์ ํ์์ ๋ง๋ค๊ณ ์ ํ ๋
- ํ์ฌ ํด๋์ค์ ์ผ๋ถ๋ถ์ฒ๋ผ ํํํ ์ ์๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ์ ํ ๋
๋ค๋ฅธ ํด๋์ค์ private ๋ฉค๋ฒ์๋ ๋ง๊ตฌ ์ ๊ทผํ ์ ์๋ ์ค์ฒฉ ํด๋์ค๋ ์๋์ฑ์ ๋ฌด๋๋จ๋ฆฌ๊ธฐ๋ ํ์ง๋ง,
๋ณด๋ค ์ ์ฐํ ํํ๋ ฅ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๊ฐ์ ธ๋ค์ค๋ค๋ ์ฅ์ ์ด ์๋ค.
class OuterClass
{
private int OuterMember;
class NestedClass
{
public void DoSomething()
{
OuterClass outer = new OuterClass();
outer.OuterMember = 10;
}
}
}
class OuterClass
{
class NesstedClass{}
}
<์์ ์ฝ๋>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
private List<ItemValue> listConfig = new List<ItemValue>(); //์ค์ฒฉ ํด๋์ค
public void SetConfig(string item, string value)
{
ItemValue iv = new ItemValue(); //๋ฆฌ์คํธ์ ์์ ๊ฐ์ฒด ์์ฑ
iv.SetValue(this, item, value); //๊ฐ์ฒด์ ์ ์ ํ ๊ฐ ํ ๋น
}
public string GetConfig(string item)
{
foreach(ItemValue iv in listConfig) //๋ฆฌ์คํธ์ ์์ธ (์ค์ฒฉํด๋์ค๋ก ๋ง๋ )๊ฐ์ฒด ํ์
{
if (iv.GetItem() == item) //GetItem()๋ก ํธ์ถํ ๊ฒฐ๊ณผ์ ๊ฐ์ผ๋ฉด
return iv.GetValue(); //GetValue()
}
return ""; //GetItem()๋ก ํธ์ถํ ๊ฐ์ด ์์ผ๋ฉด ๋น๊ฐ ์ถ๋ ฅ
}
private class ItemValue //Configuration ํด๋์ค ์์ ์ ์ธ๋ ์ค์ฒฉ ํด๋์ค์ด๋ค.
{ //private๋ก ์ ์ธํ๊ธฐ ๋๋ฌธ์
//Configuration ํด๋์ค ๋ฐ์์๋ ๋ณด์ด์ง ์๋๋ค.
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item; //์ด๊ธฐํ
this.value = value; //์ด๊ธฐํ
bool found = false; //๋ฆฌ์คํธ์ Addํ๊ธฐ ์ํ flag
for(int i=0; i<config.listConfig.Count; i++)
{
if(config.listConfig[i].item == item)
{
config.listConfig[i] = this;
found = true;
break;
}
}
if (found == false)
{
config.listConfig.Add(this); //๊ธฐ๋ฐ ํด๋์ค ๋ด์ ์๋ ๋ฆฌ์คํธ์ ์ถ๊ฐ(์ค์ฒฉํด๋์คํ์ฉ)
}
}
public string GetItem(){ return item; }
public string GetValue() { return value; }
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("Version", "V 5.0.0");//์์ดํ
, value
config.SetConfig("Size", "655,324 KB");//์์ดํ
, value
WriteLine(config.GetConfig("Version")); //V 5.0.0
WriteLine(config.GetConfig("Size")); //655,324 KB
config.SetConfig("Version","V 5.0.1");//์์ดํ
, value
WriteLine(config.GetConfig("Version")); //V 5.0.1
config.SetConfig("Version", "V 5.0.7");//์์ดํ
, value
WriteLine(config.GetConfig("Version")); //V 5.0.7
Configuration config1 = new Configuration();
config1.SetConfig("Version", "V 5.0.2");//์์ดํ
, value
config1.SetConfig("Size", "784,324 KB");//์์ดํ
, value
WriteLine(config1.GetConfig("Version")); //V 5.0.2
WriteLine(config1.GetConfig("Size")); //784,324 KB
}
}
}
<์ถ๋ ฅ ๊ฒฐ๊ณผ>
V 5.0.0
655,324 KB
V 5.0.1
V 5.0.7
V 5.0.2
784,324 KB
<์์ 2>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
List<ItemValue> listConfig = new List<ItemValue>();
public void SetConfig(string item, string value)
{
ItemValue iv = new ItemValue();
iv.SetValue(this,item,value);
}
public string GetConfig(string item)
{
foreach(ItemValue iv in listConfig)
{
if (iv.GetItem() == item)
return iv.GetValue();
}
return "No Item";
}
private class ItemValue
{
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item;
this.value = value;
bool found = false;
for(int i=0; i<config.listConfig.Count; i++)
{
if(config.listConfig[i].item == item)
{
config.listConfig[i] = this;
found = true;
break;
}
}
if (found == false)
config.listConfig.Add(this);
}
public string GetItem()
{
return item;
}
public string GetValue()
{
return value;
}
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("Version","V 5.0");
config.SetConfig("Size", "655,324 KB");
WriteLine(config.GetConfig("test")); //No Item
WriteLine(config.GetConfig("Version")); //V 5.0
WriteLine(config.GetConfig("Size")); //655,324 KB
config.SetConfig("Version", "V 5.1");
WriteLine(config.GetConfig("Version")); //V 5.1
}
}
}
<์ถ๋ ฅ ๊ฒฐ๊ณผ>
No Item
V 5.0
655,324 KB
V 5.1
<์ต์ข ์ฐ์ต>
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace Overriding
{
class Configuration
{
List<Itemvalue> listconfig = new List<Itemvalue>();
public void SetConfig(string item, string value)
{
Itemvalue iv = new Itemvalue();
iv.SetValue(this, item, value);
}
public string GetConfig(string item)
{
foreach(Itemvalue iv in listconfig)
{
if (iv.GetItem() == item)
return iv.GetValue();
}
return "์์ด์ ๊ทธ๋ฐ๊ฑฐ.";
}
private class Itemvalue
{
private string item;
private string value;
public void SetValue(Configuration config, string item, string value)
{
this.item = item;
this.value = value;
bool found = false;
for(int i=0; i< config.listconfig.Count; i++)
{
if(config.listconfig[i].item == item)
{
config.listconfig[i] = this;
found = true;
break;
}
}
if (found == false)
config.listconfig.Add(this);
}
public string GetItem() { return item; }
public string GetValue() { return value; }
}
}
class MainApp
{
static void Main(string[] args)
{
Configuration config = new Configuration();
config.SetConfig("์ฅ๋น","์ฐฉํ ํ");
config.SetConfig("ํซ", "ํ ๋ผ");
WriteLine(config.GetConfig("์ฅ๋น")); //์ฐฉํ ํ
WriteLine(config.GetConfig("ํซ")); //ํ ๋ผ
config.SetConfig("์ฅ๋น", "๋์ ํ");
WriteLine(config.GetConfig("์ฅ๋น")); //๋์ ํ
WriteLine(config.GetConfig("์์")); //์์ด์ ๊ทธ๋ฐ๊ฑฐ.
Configuration config2 = new Configuration();
config2.SetConfig("์ฅ๋น", "์ฐฉํ ํ");
WriteLine(config2.GetConfig("์ฅ๋น")); //์ฐฉํ ํ
WriteLine(config.GetConfig("์ฅ๋น")); //๋์ ํ
}
}
}
<์ถ๋ ฅ ๊ฒฐ๊ณผ>
์ฐฉํ ํ
ํ ๋ผ
๋์ ํ
์์ด์ ๊ทธ๋ฐ๊ฑฐ.
์ฐฉํ ํ
๋์ ํ
'C# > ์ด๊ฒ์ด C#์ด๋ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
30. ํ์ฅ ๋ฉ์๋ (0) | 2022.02.14 |
---|---|
29. ๋ถํ ํด๋์ค (0) | 2022.02.11 |
27. ์ฝ๊ธฐ ์ ์ฉ ํ๋, readonly (0) | 2022.02.11 |
26. ์ค๋ฒ๋ผ์ด๋ฉ ๋ด์ธํ๊ธฐ (0) | 2022.02.11 |
25. ์ค๋ฒ๋ผ์ด๋ฉ๊ณผ ๋คํ์ฑ virtual, override (0) | 2022.02.11 |