개발/유니티

[유니티] c#문법3: 궁금햇던 것들에 대하여

kimchangmin02 2025. 7. 15. 20:02

 1

get/set 프로퍼티 

  •  Name name은 완전히 다른 것입니다..
    • private string name; : 클래스 내부에서만 쓰는 실제 데이터 창고 (비공개 필드)
    • public string Name { get; set; } : 외부에서 접근 가능한 안전한 통로 (공개 프로퍼티)
  • "자바처럼 객체.SetName()도 가능한가?"
    • 문법적으로는 가능합니다. 하지만 C#에서는 그렇게 하지 않습니다.
    • 이유: 객체.Name = "철수"; 방식이 훨씬 간결하고 직관적이며, 데이터 바인딩 등 C#의 다른 강력한 기능들과 완벽하게 연동되기 때문입니다. 프로퍼티 방식이 C#의 표준이자 권장 사항입니다.

2

public virtual void Speak() {  //근데 이거는 좀 그런게, 자식이 오버라이딩 할지 안할지 부모 클래스 설계할때는 모르잖아(나중에 부모 클래스를 바꿔야하는 불편함이 있을것같은데)

 

  • virtual은 부모 클래스 설계자가 "이 기능은 자식 클래스가 자신의 상황에 맞게 고쳐 쓸 수도 있으니, 그 가능성을 안전하게 열어두겠다"라고 명시적으로 허락하는 장치입니다.
  • 기본적으로는 변경을 막아 안정성을 지키고, virtual을 통해 확장할 지점을 선택적으로 제공

3

네임스페이스 (폴더 정리)

  • 폴더 만들기: package (Java) ↔ namespace (C#)
  • 바로가기 만들기: import (Java) ↔ using (C#)

 

 

근데 c#에서 public이 왜 필요한가

아 get,set메소드말고는 접근해야하니깐

cf) 다른 네임스페이스(폴더)에서 이 클래스를 사용하려면, 클래스 선언 자체도 public이어야 합니다.

 

 

 

4

왜 c#에는 파이썬에 있는것들이 많은거지?

결론: C#이 "후발 주자"로서 다른 언어들의 좋은 점들을 적극적으로 흡수했기 때문입니다.


C#의 탄생 배경: C#은 2000년대 초반에 등장했습니다. 당시에는 Java가 시장을 장악하고 있었고, 파이썬 같은 동적/스크립트 언어들의 생산성 높은 기능들이 주목받고 있었습니다.
적극적인 벤치마킹: C#을 만든 마이크로소프트는 Java의 단점을 보완하고, 동시에 개발자들이 "와, 이거 정말 편하다!"라고 느낄 만한 현대적인 기능들을 다른 언어들로부터 많이 가져왔습니다.


대표적인 예시:
프로퍼티 (get, set): 파이썬의 @property 데코레이터와 철학이 매우 유사합니다. 메서드 호출이 아닌 변수 접근처럼 보이게 만들어 코드를 깔끔하게 합니다.
LINQ (Language-Integrated Query): SQL이나 파이썬의 리스트 컴프리헨션(List Comprehension)처럼, 데이터 컬렉션을 아주 쉽고 선언적으로 다룰 수 있게 해줍니다.
async/await (비동기 처리): 복잡한 비동기 코드를 동기 코드처럼 쉽게 작성하게 해주는 이 문법은 다른 언어들에도 큰 영향을 주었고, 이제는 표준처럼 자리 잡았습니다.
타입 추론 (var): 스크립트 언어처럼 타입을 일일이 명시하지 않아도 되는 편리함을 정적 타입 언어에 도입했습니다.