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): 스크립트 언어처럼 타입을 일일이 명시하지 않아도 되는 편리함을 정적 타입 언어에 도입했습니다.
'개발 > 유니티' 카테고리의 다른 글
| [유니티] LINQ (8) | 2025.07.18 |
|---|---|
| [유니티] 델리게이트와 이벤트 (12) | 2025.07.18 |
| [유니티]c#문법5 :스트림 이해 및 예제 (15) | 2025.07.15 |
| [유니티] c#문법4: 람다함수와 함수형 언어(java) (11) | 2025.07.15 |
| [유니티] c#문법1: 자바와의 차이점을 중심으로 (13) | 2025.07.15 |