정수형 좌표 점과 부동 소수점 좌표 점과 같이 다양한 정밀도 수준 구조의 라이브러리를 작성하고 있습니다. .NET은 Point
을 통합 구조로 사용하고 부동 소수점 변형은 PointF
을 사용하지만 최근에 Point
및 중첩 된 Point.Double
을 사용하는 Java의 해당 요소를 우연히 발견했습니다.다른 정밀도 수준의 유형을 계층 구조로 구조화해야합니까?
나는 다음과 같은 유형을 정의의 아이디어를 좋아하지 :
struct Point {
// integral implementation
public struct Double {
// double floating-point implementation
}
public struct Long {
// 64-bit implementation
}
// etc..
}
내가 부모 유형 내에서 "두 번"과 "롱"을 재정의 좋아하지 않는다. 누구든지이 패턴을 사용하고 그로부터 발생하는 더 이상의 문제를 발견 했습니까? 또는 Point
, PointD
, & PointL
과 같이 사용해야합니까?
그냥 뻔한 상태에 당신이 *에 * 한 것, 그래서 당신은, 구조체에서 상속 할 수 없습니다 : 당신은 그냥 이름 지정 규칙에 가지 않을 이유
또한, 나는 볼 수 없습니다 MS 접근 방식을 취하십시오. – tcarvin
@tcarvin - 죄송합니다. 하위 클래스가 아니라 중첩 된 클래스를 의미했습니다. 게시 된 샘플 코드 *는 C#에서 유효합니다. – dlras2
구조체 또는 클래스 인 경우 이들간에 큰 차이가 있습니다. 사용자가 Point 유형의 변수를 가지고 있으면 코드 샘플이 구조체이므로 * Point.Double과 Point.Long이 모두 존재합니다 (메모리 차지). 최소한 클래스를 사용하면이를 방지 할 수 있습니다. – tcarvin