out
변수 참조는 할당되지 않은 변수의 주소로 초기화 될 수 있지만 ref
변수는이를 수행 할 수 없으므로 out
은 ref
보다 좋습니다. 그렇다면 ref
의 필요성은 무엇입니까?아웃 & ref 모두 왜?
답변
문제는 out 매개 변수가 함수가 종료되기 전에 초기화되거나 할당되어야하기 때문입니다. 기본적으로 변수를 설정하는 것을 잊지 마십시오.
static void Method(out int pointer)
{
pointer = 5; //Initialize or assign to fix the error
}
확인이 링크 :
아이디어는 당신이 무엇을하고 있는지 남아는 전달하기 전에 초기화하여 심판 유형에 대한 정확하지만 대한 호출 방법은 반환
전에 값을 할당 할 필요가 밖으로main 메서드에서 할당을 제거한 다음 Ref를 사용하면 차이가 발생하여 다시 컴파일 오류가 발생합니다.
깨진 링크처럼 보입니다. –
필자가 알기로, out 매개 변수는 호출되는 메서드에 의해 설정되고 메서드로 전달되지 않습니다. 당신은 당신이 차이점에 대해 알고 있는지 말했듯이
class Program
{
static void Main(string[] args)
{
int integer;
Method(out integer);
// integer is now 9
}
static void Method(out int pointer)
{
...
pointer = 9;
}
}
// Option 2:
class Program
{
static void Main(string[] args)
{
int integer = 9;
Method(integer);
}
static void Method(int pointer)
{
//Do something with pointer = 9
}
}
따라서 나는 당신이 또한 밖으로 인수가 할당되어야합니다 사실을 알고 있다고 가정입니다 :
그래서이 유효 할 것이다.따라서 왜 아웃 인수를 할당해야하는지 알고 싶습니다.
키워드 - 이것은 출력하기 위해이 인수를 사용하고 있음을 의미합니다.
을 고려해보십시오. int add (int x, inty). 이 메소드가 아무것도 돌려주지 않는 경우는 동작합니다. 여기서도이 메소드가 정수를 반환하는 계약을 선언합니다. 마찬가지로 out 키워드의 경우 out 변수가 할당되고 출력으로 제공되는 계약을 정의합니다.
왜 업데이트해야합니까? 명시 적으로 out 인수로 표시했기 때문에 값을 할당하고 반환 할 것입니다. 우리가 배정 할 것이없는 시나리오가 있고 우리가 여전히 논쟁을 사용하고 있다면 우리는 디자인 문제가 있다는 것을 확신합니다.
ref 키워드 : - 참조를 전달한다는 의미입니다. 그것은 당신이 그것을 할당하고 어떤 결과물을 제공한다는 것을 의미하지 않습니다. 그런 식으로 사용할 수는 있지만 계약이 아닙니다. 당신은 논쟁에 대한 참고 문헌을 가지고 있고 그것으로 무엇이든 할 수 있습니다. C#에서 인수는 기본적으로 값으로 전달됩니다. ref 키워드는 참조로 인수를 전달하는 방법을 제공합니다.
ref 키워드 here에 대한 자세한 정보를 얻을 수 있습니다.
희망이 도움이 될 것입니다.그냥 패스 참조로 함수에 매개 변수를 원하는 경우
, 당신은 ref
을 사용해야합니다
class Program
{
static void Main(string[] args)
{
int integer = 9;
Method(ref integer);
}
static void Method(ref int pointer)
{
}
}
이것은 일반적으로 컴파일됩니다.
정답은 "그것이 맞다"입니다. 그것은 '외출'의 정의입니다. – Mephy
@Mephy 그리고 여전히 5 명이 모여 대답을했습니다. – mihai
@Mephy no offens, out 매개 변수의 동작을 정의하는 링크를 전달해주십시오. –