문제

이것은 약간의 패턴 일 수 있지만 C# 클래스의 속성이 여러 값을 수락 할 수 있습니까?

예를 들어, 공개 INT 속성이 있고 항상 int를 반환하기를 원하지만 소수점, 정수 또는 기타 데이터 유형을 할당하여 속성을 설정할 수 있기를 원합니다. 그래서 내 질문은 속성이 여러 값을 수락 할 수 있는지 여부입니다.

도움이 되었습니까?

해결책

나는 당신이 묻는 것이 무엇을 의미한다고 생각합니다. 어떻게 절대적인 그리고 명백한 캐스팅 작업 int 그리고 decimal?

하나의 객체를 다른 정의 된 유형으로 자동 커버하는 암시 적 주조에 대해 묻습니다. 당신은 이것을 위해 이것을 할 수 없습니다 int 그리고 decimal 그것들은 이미 프레임 워크에 정의되어 있고 당신은 decimal 그것을 캐스팅하여 int. 그러나 당신이 그것을 만든 실제 객체의 예로 사용한다면 당신은 절대적인 위의 링크, 이것이 어떻게 작동하는지와 구현 방법에 대해 자세히 알아보십시오.

그러나 항상 변환 메소드를 사용하여 올바른 유형으로 변환 할 수 있습니다.

public int MyProperty { get; set; }
...
obj.MyProperty = Convert.ToInt32(32.0M);
obj.MyProperty = Convert.ToInt32(40.222D);
obj.MyProperty = Convert.ToInt32("42");

다른 팁

편집하다: OP가 특징에 구체적으로 바인딩 되므로이 방법은 사용할 수 없습니다.

나는 이것이 당신이 묘사하는 견고성으로 가능하다고 믿지 않습니다. 이 경우 당신은 과부하 된 방법 (다형성).

이것은 일반적으로 a로 알려진 것입니다 세터 (또는 Mutator) 및 여러 다른 유형의 매개 변수를 수용하기 위해 방법을 과부하 할 수 있습니다. 원하는 경우 각각 다르게 수행됩니다. 내가 설정 한 방식은 구문 적으로 정확하지 않을 수 있지만 이것이 당신이 찾고있는 일반적인 아이디어입니다.

public class MyClass {
  private Int32 mySomeValue;
  public void setSomeValue(Double value) { this.mySomeValue = Convert.ToInt32(value); }
  public void setSomeValue(Int32 value) { this.mySomeValue = value; }
}

런타임에 유형을 확인해야 할 것 같습니다. 속성이 객체를 수락하고 유형을 결정하고 행동을 취할 수 있습니다. 물론 당신이 기대하지 않는 것들에 대해 예외를 제외해야 할 것입니다. 당신이 말했듯이, 아마도 최고는 아니지만 가능합니다. :)

아니요. 속성은 단일 값을 가지고 있습니다. 동일한 유형의 변수에 할당 할 수있는 모든 것을 할당 할 수 있습니다.

속성은 일종의 공공 분야처럼 보일 것입니다. 세터 방법을 만들거나 속성 세터와 반대되는 과제 진술서에서 캐스트/변환을 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top