저는 지금 C # 수업을 듣고 있으며 최선의 방법을 찾으려고 노력하고 있습니다. 저는 Java 배경에서 왔으므로 Java 모범 사례에만 익숙합니다. 저는 C # 초보자입니다!
Java에서 개인 속성이 있으면 이렇게합니다.
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
C #에서는 여러 가지 방법이 있음을 알 수 있습니다.
Java처럼 할 수 있습니다.
private string name;
public void setName(string name) {
this.name = name;
}
public string getName() {
return this.name;
}
또는 이렇게 할 수 있습니다.
private string name;
public string Name {
get { return name; }
set { name = value; }
}
또는:
public string Name { get; set; }
어떤 것을 사용해야하며 각 접근 방식과 관련된주의 사항이나 미묘한 점은 무엇입니까? 클래스를 만들 때 Java에서 알고있는 일반적인 모범 사례를 따르고 있습니다 (특히 효과적인 Java 읽기). 예를 들어, 저는 불변성을 선호합니다 (필요한 경우에만 setter 제공). 저는 이러한 관행이 C #에서 setter와 getter를 제공하는 다양한 방법에 어떻게 적용되는지 궁금합니다. 본질적으로 Java 세계의 모범 사례를 C #으로 어떻게 변환합니까?
편집하다
나는 이것을 Jon Skeet의 답변에 대한 의견으로 게시했지만 오래되었습니다.
사소하지 않은 속성 (즉, 상당한 처리 및 유효성 검사 포함)은 어떻습니까? 나는 아직도 공용 속성을 통해 만에 캡슐화 된 논리에 노출 수 get
와 set
? 전용 setter 및 getter 메서드 (관련 처리 및 유효성 검사 논리 포함)를 사용하여이 작업을 수행해야하는 이유는 무엇입니까?