c# 초보 입니다.. 문의 드립니다

C# 코드 관련해서 아래와 같이 질의가 있는데 확인 부탁 드립니다

  1. MainWindow Class 에서 정의한 전역변수 값을 타 Class 에서 불러오기 위해
    MainWindow mainwindow = new MainWindow(); 요런식으로 타 Class 에서 객체를
    선언하고 사용하려고 했는데… ‘null’ 값이 반환됩니다 혹시 이런식으로 사용하면 안되는건가요 ?
    MainWindow 에서 해당 전역변수 디버그 했을때는 값이 저장된것을 확인했습니다.

  2. c 언어는 처음이라… Class 생성하는 기준을 잘 모르겠는데 보통 코드 작성하실때 어떤 기준, 조건이
    있으면 Class 를 생성해서 작성하는지 기준이 있을까요 ? 저 같은 경우 예를 들어
    Dll import 하는 메소드를 특정 Class 로 정의해서 모아서 관리합니다
    맘같아서는 MainWindow Class 에 다 때려박고 사용하고 싶은데 ㅠㅠ 혹시 관련 글 있으시면 연결 부탁드립니다

1개의 좋아요

안녕하세요, 사실 글만 봤을 때 어떻게 답변 드려야 할 지 감이 안 오네요 ㅎㅎ

  1. 해당 코드를 첨부해주시는게 지금 어떤 문제가 있다, 쓸 때 이렇게 사용한다 답변 드릴 수 있을거같아요 github 링크를 첨부해주셔도 괜찮구요

  2. Class를 생성하는 기준은 저의 경우 객체지향에 맞게 응집도에 따라 생성하고 관리하고 있습니다.
    예를 들면 아주 간단하게 로그인 기능이면 로그인 클래스, 회원가입이면 회원가입 클래스 정도가 되겠네요(실제로는 더 세부적으로 나눠 사용합니다)

어떤 언어를 사용해보셨는지는 모르겠지만 객체지향 프로젝트 구조 대한 부분을 조금 더 보시는게 좋다고 생각됩니다.

1개의 좋아요

How to use Global Variables in C#? - Stack Overflow

1개의 좋아요

답변 감사합니다 공부좀더 하겠습니다 !!

1개의 좋아요

안녕하세요!
질문글의 해석이 여러가지가 가능합니다. 그래서 답변을 안하시고 가시는 분들이 있을거에요.
질문을 자세히하면 좋겠죠. 근데 초보라서 자세히 못하실거 같아요.
제 맘대로 해석한바에 따라 답변을 드릴게요. 조금이라도 도움 되시라는 마음입니다.

MainWindow → mw 라고 줄여쓸게요.

“전역” 이라는 단어를 쓰셨는데 그게 static 필드를 의미하시는건지요? (필드:클래스 내 멤버변수)
아닐 것 같아요. 왜냐하면 static 필드라면 타 클래스에서 mw의 객체를 초기화할 필요 없이 mw.그변수 로 바로 사용 가능하거든요.
그러면 어떤 뜻으로 썼는지 상상을 해보자면 초보라서 클래스, 객체, 필드 개념이 안잡혀 있으신 것으로 전제하면,
[mw 안에서라면 어디서에든 접근가능한 변수 = 전역변수] 라고 생각하시는 것 같습니다.
한 클래스 내의 필드들은 당연히 클내스 내에서는 어디서든 접근 가능한거에요. 클래스 개념이 있는 패러다임에서의 전역은 다른데 써야 적절한 단어이지요.
아무튼 여전히 추정 상황입니다. 평범한 mw의 필드가 (static도 아님) 두 개의 mw 객체 내에서 공유되지 않습니다. null이 반환될 수 있어요.
mw의 객체 A에서 문자열필드를 초기화하셨고 뭐 “hello” 를 할당했다고 할게요. 타 클래스에서 mw를 초기화하셔서 객체 B를 만드셨는데 B의 그 필드는 null이죠.
타 클래스에 객체 A를 참조가능하게 하시면 타 클래스 내에서 A의 필드를 접근가능할 수 있습니다. 필드의 한정자가 private 이상이어야겠죠.
아니면 타 클래스에서 새 객체 B를 만드셔도 A 객체와 같은 값을 가지고 싶으시다면 필드를 static으로 그리고 한정자도 private 이상으로 만드시면 됩니다. 근데 그러면 사실 B 객체를 만드실 필요가 없습니다. 위에 처음에 썼어요.

클래스를 언제 생성하느냐. 이건 음 사고방식 같은거에요. 관점? 의도?
때때마다 다른 기준으로 클래스를 정의하셔도 되요.
언제나 쓴이분에게 유지보수,디버깅,비용,재사용용이성 등등의 여러항목을 최대한으로 효율적이게 해줄 수 있는 설계대로 클래스들을 정의하시면 됩니다. 실력은 아날로그 적으로 발전되시는 것이고 “딱 이러이러하다” 라고 한 방에 탑재되는 아이템이 아니에요. 객체지향 설계적 사고력이 개발되셔야하는 것이에요. 그래서 답글로는 물리적으로 전수해드릴 수가 없고. 많이 보시고 많이 만들어보시고 (단, 더 나은 것을 항상 추구하고 변화를 받아들여야함) 해야겠죠. 추천드리는건 기승전책입니다. 책 많이 보셔요.
무엇을 모르는 사람은 뭘 모르는지도 모릅니다. 찾아서 공부하기엔 얻어걸리는거에요. 책에는 타인이 가진것을 다 써놓았죠. 있는지도 모르는걸 배울 확률이 다른것보다 매우 높습니다.

2개의 좋아요