어떤 클래스의 변수를 다른 클래스에서 참조하고 싶습니다.
조회수 10387회
안녕하세요. C# 초보입니다... 여태까지 C만 쓰다가 c# 기초를 다지고 있는 중인데.. 예를 들어서
public class A
{
public string a;
public int b;
}
public class B
{
var tmp = new A();
tmp.a = null;
tmp.b = 0;
}
public class C
{
//B에서 변경된 값을 호출하고 싶은 부분!
}
위와 같이 A클래스에서 선언된 변수들을 B 클래스에서 초기화 시키고, 그 다음에 B에서 변경된 값을 C클래스에서 호출을 하고 싶은데요 static을 사용하게 되면 캡슐화라는 속성 규칙을 깨뜨리게되는 것이니 가급적 사용하고 싶지 않고 어떤 방법을 써야 할지 의견 좀 부탁드리겠습니다. ㅜㅜㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
특정 class의 instance에 데이터를 담아서 여러 class에서 이를 수시로 변경하거나 참조하는 경우에는 Singleton Pattern을 활용하는게 좋습니다.
C#에서 Singleton Pattern을 구현하는 방법은 다양하기 때문에 아래 링크를 참조해주세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 부연을 드리자면, C언어만 접하다가 C#을 처음 접하신 것이라면 C#문법을 먼저 공부하는 것보다 OOP 개념부터 이해하시는게 좋습니다. Abstract, Encapsulation, Polymorphism 핵심 개념을 이해하지 못한 상태에서 문법을 공부하는 것은 비효율적입니다. 알 수 없는 사용자 2019.1.7 17:06
- 감사합니다! 알 수 없는 사용자 2019.1.7 17:24
-
-
첫번재 가장 쉬운방법은 static 을 사용하는 것 입니다.
그런데 좋은 방법은 아닙니다.
추천 드리는 방법은 Registry Pattern 입니다..
http://wiki.c2.com/?RegistryPattern
싱글턴 패턴으로 객체를 생성하고 그 객체에서 map이나 list를 이용하여 변수들를 관리하는 겁니다. 이렇게하면 객체는 유일하기 때문에 전역변수를 관리할 수 있습니다.
이 방법도 jvm에 한해 유일하기 때문에 클러스터링된 구조라면 동기화하는 장치가 필요할 수 있습니다.
싱글턴 패턴이 무엇인지 모른다면...학습을 해보세요 객체생성 패턴이고 구조가 간단합니다. 물론 이것도 static 을 사용하긴 합니다.
- 엇 윗분이 벌써 달았군요-.-... 정영훈 2019.1.7 18:20
- 죄송합니다.. 어쩌다보니 제가 새치기한 것 처럼 되었네요 ^^; 알 수 없는 사용자 2019.1.8 11:27
- 아닙니다^^; 정영훈 2019.1.8 18:01
댓글 입력