public partial class FrmMain : Form { public static string 변수명1; " 변수명2;
동적으로 바뀌는 값들을 유지시켜서 모든 *.cs에서 변수를 공유하기 위해 최상위폼의 cs파일에서 Public Static 변수를 선언해 사용했는데 프로그램은 정상적으로 돌아는 갑니다. 이렇게 사용한 이유는 각 메소드가 실행될때 변수값들은 동적으로 항상 변합니다.. 그래서 아예 메모리게 상주 시켜 놓고 바뀌는 값들을 어디서든 사용하기 위해서 입니다. (예로 데이터베이스의 쿼리 집합을 메소드나 클래스가 동적으로 받아서 각각 다른 값으로 사용한다던가 할때 등등..)
근데 연습프로그램에서 처럼 변수가 몇개 안된다면 큰 무리는 없겠지만 변수선언이 많아지고 선언할 변수가 늘어난다면 메모리 문제가 예상되고 상당히 좋지 않은 방법인 것 같다는 생각이 들어요..(아닐 수도 있지만..)
그래서 지난번에 알려주신 델리게이트, 이벤트를 이용하는 방법으로도 해 봤고 오버라이드를 이용해 보고, 새로 만든 클래스를 다른 메소드나 *.cs에서 객체를 매개변수로 넘겨서 해 봤는데 넘어온 객체를 사용하려면 또 다시 초기화를 시켜야 되고 그러면 쿼리를 검색해서 새로 만들어진 값집합들이 사라지는 문제가 있다라구요.. 배열의 참조값을 매개변수로 넘겨도 보고 책을 찾아봐도 pulic static을 사용하는 효과를 내기는 힘들더라구요.(물론 제가 몰라서 그렇겠지만..ㅎㅎ) 또 클래스를 하나 만들어서 public class myTest { public static 변수명1; 변수명2; ... ... } 이렇게 해도 어쨌든 많은 메모리를 차지하는 문제가 있구요..
질문정리가 안되네요.. 죄송해요..ㅎㅎ c#에는 전역변수라는게 없는 걸로 아는데 질문의 요지는 public static을 사용하지 않고 public static 효과를 내려면 어떤 방법이 있는지요.. 어디에서나 값이 동적으로 바뀐 값들이 그대로 유지되면서 말입니다..
제가 보는 책들이 기초서이고 데브피아같은 곳에서 찾아봐도 원하는 답변을 찾기가 힘드네요..
첫댓글메모리 문제보다는 static을 많이 사용하면 시스템이 커질경우 동기화가 어렵다는 큰 단점이 있습니다. 전역변수 또한 마찬가지구요. 비슷한 효과를 내는 다른 방법 또한 마찬가지 입니다. 프로그램의 동기화를 위해 Mutex와 모니터 semaphore등을 이용하지만 이러한 것들을 무차별적으로 이용한 동기화는 자칫 데드락을 발생시킬 잠재적 위험이 있고, 그에 따른 데드락 발생시 디버그가 어렵다는 단점이 있습니다. 메서드또는 객체에 인자를 넘겨줄때 out키워드를 이용하시는 것이 좋을 것이라고 생각되네요. 많이 쓰면 약간 머리아프지만 사용자 입장에서 퍼포먼스, 기능성과 프로그래머 입장에서 코딩의 간편함은 반비례 관계니..ㅎㅎ
value Object 를 cs로 사용하면 될것아니오... 모르시오? 1.aspx란 파일이 있지.. 여기서 쓰는 변수가 존나게 만타치자.. 비하인드 소스에 일일이 변수선언하려면 지저분 해지고 뭐 등등.. 이 있지 그래서 따로 lib 에 cs파일 생성해서 변수선언하고 가져다 쓰면 되잔아.. 객체지향 의미좀 다시 되새기길..
첫댓글 메모리 문제보다는 static을 많이 사용하면 시스템이 커질경우 동기화가 어렵다는 큰 단점이 있습니다. 전역변수 또한 마찬가지구요. 비슷한 효과를 내는 다른 방법 또한 마찬가지 입니다. 프로그램의 동기화를 위해 Mutex와 모니터 semaphore등을 이용하지만 이러한 것들을 무차별적으로 이용한 동기화는 자칫 데드락을 발생시킬 잠재적 위험이 있고, 그에 따른 데드락 발생시 디버그가 어렵다는 단점이 있습니다. 메서드또는 객체에 인자를 넘겨줄때 out키워드를 이용하시는 것이 좋을 것이라고 생각되네요. 많이 쓰면 약간 머리아프지만 사용자 입장에서 퍼포먼스, 기능성과 프로그래머 입장에서 코딩의 간편함은 반비례 관계니..ㅎㅎ
value Object 를 cs로 사용하면 될것아니오... 모르시오? 1.aspx란 파일이 있지.. 여기서 쓰는 변수가 존나게 만타치자.. 비하인드 소스에 일일이 변수선언하려면 지저분 해지고 뭐 등등.. 이 있지 그래서 따로 lib 에 cs파일 생성해서 변수선언하고 가져다 쓰면 되잔아.. 객체지향 의미좀 다시 되새기길..
말투가 좀 껄껄하다!! 기여분xx...ㅎㅎ 앞으로 답하지말길.. 자네가 세계최고 프로그래머라도 배울 맘이 싹~~가신다.. 자네도 불과 몇개월전엔 이런글을 섰더구나...(안녕하세요 27살의 대전청년 현재 모모소프트회사에서 닷넷개발자로 있네요 아직 초보라서 많은 가르침 받고자 등업신청부탁합니다./ 요번에 모모소프트회사에 닷넷프로그래머로 일하게된 청년인데 하나도모르겠습. 제발 등업부탁요..) 껄껄한xx...