메소드 자체에서 메소드로 전달 된 값을 수정해야 할 때가 있습니다. 예를 들어 다음과 같은 방법으로 문자열을 삭제하는 것이 있습니다.
void SanitizeName(string Name)
{
Name = Name.ToUpper();
//now do something here with name
}
Name
인수가 참조로 전달되지 않기 때문에 이것은 순수하게 무해합니다 . 그러나 어떤 이유로 미래의 개발자가 모든 값을 ref로 전달하기로 결정하면 문자열을 위생 처리하면 메소드 외부의 값에 영향을 미쳐 결과가 나빠질 수 있습니다.
따라서 인수 자체에 다시 할당하는 대신 항상 다음과 같이 로컬 복사본을 만듭니다.
void SanitizeName(string Name)
{
var SanitizedName = Name.ToUpper();
//now do something here with name
}
이렇게하면 값이 전달되는 방식을 변경해도 메소드 외부의 진행 상황에 영향을 미치지 않지만 과도하게 편집증이되는지 궁금합니다.
if (param == NULL) param = default_value;
습니까?
by ref
것을 전달되지 않았다 어떤 이유로 든 로컬 액세스를 로컬이 아닌 액세스로 변환하기 위해서는 항상 결과를주의 깊게 확인해야합니다.
Name = Name.ToUpper();
은Name
변경 값으로 코드를 이해하기 어렵게 만듭니다 . 두 번째 예는 미래를 보장 할뿐 아니라 현재하고있는 일을 추론하기가 더 쉽습니다.