반응형
C #에서 속성을 'out'매개 변수로 전달
내가 가지고 있다고 가정합니다.
public class Bob
{
public int Value { get; set; }
}
Value 멤버를 다음과 같은 out 매개 변수로 전달하고 싶습니다.
Int32.TryParse("123", out bob.Value);
하지만 컴파일 오류가 발생합니다. " 'out'인수는 변수로 분류되지 않습니다." 이것을 달성하는 방법이 있습니까, 아니면 변수를 추출해야합니까?
int value;
Int32.TryParse("123", out value);
bob.Value = value;
자동 구현 속성 대신 필드와 "일반"속성을 명시 적으로 사용해야합니다.
public class Bob
{
private int value;
public int Value
{
get { return value; }
set { this.value = value; }
}
}
그런 다음 필드 를 out 매개 변수로 전달할 수 있습니다 .
Int32.TryParse("123", out bob.value);
그러나 물론 필드가 비공개이므로 동일한 클래스 내에서만 작동합니다 (그리고 그래야합니다!).
속성은이 작업을 허용하지 않습니다. 참조로 속성을 전달하거나 out 매개 변수로 사용할 수 있는 VB에서도 기본적으로 추가 임시 변수가 있습니다.
의 반환 값에 대해 신경 쓰지 않았다면 TryParse
언제든지 고유 한 도우미 메서드를 작성할 수 있습니다.
static int ParseOrDefault(string text)
{
int tmp;
int.TryParse(text, out tmp);
return tmp;
}
그런 다음 다음을 사용하십시오.
bob.Value = Int32Helper.ParseOrDefault("123");
이렇게하면 여러 위치에서이 작업을 수행해야하는 경우에도 단일 임시 변수를 사용할 수 있습니다.
당신은 그것을 달성 할 수 있지만 속성으로는 불가능합니다.
public class Bob {
public int Value { get; set; } // This is a property
public int AnotherValue; // This is a field
}
당신은 사용할 수 없습니다 out
에 Value
,하지만 당신은에 있습니다 AnotherValue
.
이것은 작동합니다
Int32.TryParse("123", out bob.AnotherValue);
그러나 공통 지침에서는 클래스 필드를 공개하지 말라고합니다. 따라서 임시 변수 접근 방식을 사용해야합니다.
참고 URL : https://stackoverflow.com/questions/1370238/passing-a-property-as-an-out-parameter-in-c-sharp
반응형
'IT TIP' 카테고리의 다른 글
기본 Java 설치의 cacerts 위치를 얻는 방법은 무엇입니까? (0) | 2020.10.20 |
---|---|
Swagger API 문서에서 PDF 생성 (0) | 2020.10.19 |
과거 원시 날씨 데이터는 어디에서 찾을 수 있습니까? (0) | 2020.10.19 |
C ++ 컴파일 프로세스 프로파일 링 (0) | 2020.10.19 |
이메일 주소에 다국어 (영어가 아닌) 문자가 포함될 수 있습니까? (0) | 2020.10.19 |