다른 사람들 이이 키워드를 어떻게 사용하는지 궁금했습니다 . 생성자에서 사용하는 경향이 있지만 클래스 전체에서 다른 방법으로 사용할 수도 있습니다. 몇 가지 예 :
생성자에서 :
public Light(Vector v)
{
this.dir = new Vector(v);
}
다른 곳
public void SomeMethod()
{
Vector vec = new Vector();
double d = (vec * vec) - (this.radius * this.radius);
}
답변
이 키워드는 C #에서 여러 가지 용도로 사용 됩니다.
- 유사한 이름으로 숨겨진 회원 자격을 얻으려면
- 객체가 다른 메소드에 매개 변수로 전달되도록하려면
- 메소드가 객체를 반환하도록하려면
- 인덱서를 선언하려면
- 확장 메서드를 선언하려면
- 생성자간에 매개 변수를 전달하려면
- 값 유형 (struct) value을 내부적으로 재 할당합니다 .
- 현재 인스턴스에서 확장 메서드를 호출하려면
- 다른 유형으로 캐스팅하려면
- 동일한 클래스에 정의 된 생성자를 연결하려면
예를 들어 일반적인 명명 규칙을 따르고 필드 (낙타 경우) 대신 속성 (파스칼 경우)을 사용하여 로컬 변수와 충돌하지 않도록 범위 내에서 이름이 같은 멤버 및 로컬 변수가없는 경우 첫 사용을 피할 수 있습니다 (낙타) 케이스). C # 3.0에서는 자동 구현 된 속성 을 사용하여 필드를 쉽게 속성으로 변환 할 수 있습니다 .
답변
나는 이것이 으르렁 거리는 소리를 의미하지는 않지만 중요하지 않습니다.
진심으로.
프로젝트, 코드, 직업, 개인 생활 등 중요한 것들을 살펴보십시오. “this”키워드를 사용하여 필드에 액세스 할 수 있는지 여부에 따라 성공을 거두지 않을 것입니다. 이 키워드는 정시에 배송하는 데 도움이되지 않습니다. 버그를 줄이지 않고 코드 품질이나 유지 관리성에 별다른 영향을 미치지 않습니다. 그것은 당신에게 인상을 주거나 사무실에서 더 적은 시간을 보내지 않을 것입니다.
정말 스타일 문제 일뿐입니다. “this”가 마음에 들면 사용하십시오. 당신이하지 않으면하지 마십시오. 올바른 의미를 얻기 위해 필요한 경우 사용하십시오. 사실 모든 프로그래머는 자신 만의 고유 한 프로그래밍 스타일을 가지고 있습니다. 이 스타일은 “가장 미적으로 유쾌한 코드”의 모습에 대한 특정 프로그래머의 개념을 반영합니다. 정의에 따르면 코드를 읽는 다른 프로그래머는 다른 프로그래밍 스타일을 갖게됩니다. 즉, 다른 사람이 좋아하지 않거나 다르게 수행 한 일이 항상있을 것입니다. 어느 시점에서 어떤 사람은 코드를 읽고 무언가에 대해 불평합니다.
나는 그것을 걱정하지 않을 것입니다. 나는 당신의 취향에 따라 코드가 가능한 한 미적으로 기쁘게하는지 확인합니다. 프로그래머 10 명에게 코드 형식을 지정하는 방법을 물어 보면 약 15 가지 의견이 나옵니다. 초점을 맞추는 것이 더 좋은 방법은 코드가 어떻게 반영되는지입니다. 상황이 올바르게 추상화 되었습니까? 의미있는 이름을 골랐나요? 코드 중복이 많이 있습니까? 물건을 단순화 할 수있는 방법이 있습니까? 그런 것들을 올바르게하는 것이 프로젝트, 코드, 직업 및 인생에 가장 긍정적 인 영향을 줄 것이라고 생각합니다. 우연히도, 아마도 다른 사람이 가장 덜 중얼 거릴 수도 있습니다. 코드가 작동하고, 읽기 쉽고, 잘 이해되면, 다른 사람은 필드를 초기화하는 방법을 면밀히 조사하지 않을 것입니다. 그는 단지 당신의 코드를 사용하고 위대함에 감탄합니다.
답변
나는 절대적으로 필요한 경우, 즉 다른 변수가 다른 변수를 가리고있을 때만 사용합니다. 여기와 같이 :
class Vector3
{
float x;
float y;
float z;
public Vector3(float x, float y, float z)
{
this.x = x;
this.y = y;
this.z = z;
}
}
또는 Ryan Fox가 지적한 것처럼 이것을 매개 변수로 전달해야합니다. (로컬 변수는 멤버 변수보다 우선합니다)
답변
개인적으로, 나는 멤버 변수를 언급 할 때 항상 이것을 사용하려고 합니다. 코드를 명확하게하고 더 읽기 쉽게 만듭니다. 모호성이 없어도 처음으로 내 코드를 읽는 사람은 그것을 알지 못하지만 이를 일관되게 사용하면 멤버 변수를보고 있는지 알 수 있습니다.
답변
필요하지 않더라도 인스턴스 변수를 참조 할 때마다 사용합니다. 코드가 더 명확하다고 생각합니다.
답변
나는 그것을 사용한다고 말하는 모든 사람들이 항상 “모범 사례”라고 믿을 수는 없다.
Corey의 예 와 같이 모호성이 있거나 Ryan의 예 와 같이 객체를 매개 변수로 전달해야하는 경우 “this”를 사용하십시오 . 스코프 체인을 기반으로 변수를 분석 할 수 있다는 것은 변수가 포함 된 한정 변수가 필요하지 않을 정도로 명확해야하기 때문에 달리 사용할 이유가 없습니다.
편집 : “this”에 대한 C # 설명서는 위에서 언급 한 “this”키워드에 대해 색인 작성기 선언을 위해 한 번 더 사용했음을 나타냅니다.
편집 : @ JUAN : 허, 내 진술에 불일치가 보이지 않습니다. “this”키워드를 사용할 때 3 가지 경우가 있습니다 (C # 설명서에 설명되어 있음) . 실제로 필요한 경우입니다. 섀도 잉이 없을 때 생성자에서 변수 앞에 “this”를 고수하는 것은 단순히 키 스트로크를 낭비하고 그것을 읽을 때 내 시간을 낭비하는 것이므로 아무런 이점이 없습니다.
