>  기사  >  백엔드 개발  >  c#ref 키워드 샘플 코드 공유

c#ref 키워드 샘플 코드 공유

黄舟
黄舟원래의
2017-03-20 13:28:061349검색

C# 언어 참조

ref(C# 참조)

ref 키워드를 사용하면 매개변수가 참조로 전달됩니다. 결과적으로 메서드의 매개 변수에 대한 모든 변경 사항은 제어가 호출 메서드로 다시 전달될 때 변수에 반영됩니다. ref 매개 변수를 사용하려면 메서드 정의와 메서드 호출 모두에서 ref 키워드를 명시적으로 사용해야 합니다. 예:

코드 복사

class RefExample
{
    static void Method(ref int i)
    {
        i = 44;
    }
    static void Main()
    {
        int val = 0;
        Method(ref val);
        // val is now 44
    }
}

ref 매개변수에 전달된 매개변수는 먼저 초기화되어야 합니다. 이는 매개변수가 전달되기 전에 명시적으로 초기화될 필요가 없는 out 과 다릅니다. (참고하세요.)

ref와 out은 런타임에 다르게 처리되지만 컴파일 타임에는 같은 방식으로 처리됩니다. 따라서 한 메서드가 ref 매개 변수를 사용하고 다른 메서드가 out 매개 변수를 사용하는 경우 두 메서드 모두 오버로드될 수 없습니다. 예를 들어, 다음 코드의 두 메서드는 컴파일 관점에서 동일하므로 다음 코드는 컴파일되지 않습니다.

코드 복사

class CS0663_Example 
{
    // compiler error CS0663: "cannot define overloaded 
    // methods that differ only on ref and out"
    public void SampleMethod(ref int i) {  }
    public void SampleMethod(out int i) {  }
}

그러나 메서드가 ref 또는 out 매개 변수를 사용하는 경우 , 또 다른 방법은 이 두 가지 유형의 매개변수를 사용하지 않으므로 아래와 같이 오버로드될 수 있습니다.

코드 복사

class RefOutOverloadExample
{
    public void SampleMethod(int i) {  }
    public void SampleMethod(ref int i) {  }
}

비고

속성은 변수이므로 ref 매개변수로 전달될 수 없습니다.

배열 전달에 대한 자세한 내용은

ref 및 out을 사용하여 배열 전달을 참조하세요.


참조로 값 유형을 전달하는 것도 유용하지만(위 참조) ref는 참조 유형을 전달하는 데에도 유용합니다. 참조 자체가 참조로 전달되므로 호출된 메서드가 참조에서 참조하는 개체를 수정할 수 있습니다. 다음 예제에서는 참조 유형이 ref 매개변수로 전달되면 객체 자체가 변경될 수 있음을 보여줍니다.

아아아아

위 내용은 c#ref 키워드 샘플 코드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.