2009-05-22 3 views
6

뭔가 같은 :ref 나 value (C#)로 메서드 매개 변수를 전달하기위한 일반적인 짧은 지침은 무엇입니까?

  • 메서드 호출 후 변수의 값이 반환 될 경우 :
  • 인스턴스화 할 필요가없는 경우 메서드 호출을 사용 심판
  • 전에 인스턴스화 할 수있는 경우

  • 호출이 사용되기 전에

  • 메서드 호출에서 다른 값을 반환, 결정 또는 계산할 때 값을 사용하지 않으면 ref를 사용하지 마십시오.

올바르게 받았습니까? 당신의 짧은 지침은 무엇입니까?

답변

0

이 정말 값 유형의 질문하지만이 발견 (아웃 키워드를 사용) 심판에 의해 값을 전달하는 하나 개의 좋은 사용 ...

int i = 0; 

if (int.TryParse("StringRepresentation", out i) 
{ 
    // do something with i which has taken the value of a the previous successful TryParse 
} 
4

에 응답하는 경우 확실하지 :

  • 포함 된 값을 그대로 사용하고 원래 위치에서 변경하지 않으려면 값으로 기본 전달 방법을 사용하십시오.
  • 원래 저장소에서 변경해야하는 경우에는 ref를 사용하십시오. 예 : 참조 유형의

    int a = -3; 
    
    protected void EnsurePositiveValues(ref int value) 
    { 
        if (value < 0) 
         value = 0; 
    } 
    

:

  • 그냥 인스턴스를 사용하거나 참조 (기본 전달 방법을 사용하여 변경해야하는 경우, 호출해야 "참조 사본")
  • 원래 참조에서 (다시) 지정해야 할 경우 ref를 사용하십시오. 예 :

    User u = MembershipAPI.GetUser(312354); 
    
    protected void EnsureUser(ref User user) 
    { 
        if (user == null) 
         user = new User(); 
    } 
    
  • 또한 계정 값과 참조 유형으로 수행해야
1

. 메소드에 참조 유형을 매개 변수로 전달할 때 포인터을 변수에 전달합니다. 즉, 메서드 내에서 변수를 변경할 수 있으며 메서드를 호출 한 코드에서 변수를 사용할 수 있지만 null로 설정하면 포인터가 null로 설정되고 변수가 그대로 유지됩니다. 메서드가 반환됩니다.

관련 문제