문제

단일 클래스의 과일의 무게를 플로트/더블에 개별적으로 저장하는 사용자 정의 컬렉션 클래스가있는 경우 :

1.1, 3.3, 6.6, 4.4, ...

또한 플로트인지 이중인지를 지정하고 과일 유형을 차별화하려면 다음과 같이하는 것이 좋습니다.

열거 사용 :

FruitList<float, FruitType.Orange>

또는

생성자에 열거를 사용 :

FruitList<float> (FruitType.Orange)

또는

수업 사용 :

FruitList<float, Orange>

또는

생성자에서 클래스 사용 :

FruitList<float> (Orange)

나를 혼란스럽게하는 것은 이런 종류의 물건을 지정하는 것이 <> 지역에서 의미가 있는지 여부입니다 (해당 영역이 무엇인지 모릅니다)?

어느 것이 더 좋고, 빠르고, 더 효율적인 연습입니까?

BTW Orange 클래스는 어디서나 사용되지 않습니다. 그냥 유형을 지정하는 것이 합리적이라면 작성 했습니까?

편집 : BTW 이것은 실제 사례가 아니라 예제 일 뿐이지 만 이것은 명확한 방식으로 반영됩니다. 모든 부유물/복식처럼 다른 방법으로 전달됩니다. 그러나 방법은 올바르게 수행 할 과일 유형을 알아야합니다. 과일 자체는 아무 의미가 없습니다.

도움이 되었습니까?

해결책

우선, 열거 값은 유형이 아니므로 예제

FruitList<float, FruitType.Orange>

작동하지 않습니다. 일반 목록이 정적으로 입력한지 확인하려면 Orange 당신은 이것을 사용해야합니다

FruitList<float, Orange>

당신은 결코 사용하지 않더라도 Orange 수업. 내가 알 수 있듯이 변수 이름으로 유형을 전달할 수 있기 때문에 필요하지 않을 것입니다.

FruitList<float> orangeWeights = new FruitList<float>(FruitType.Orange);

다른 팁

FruitList<float>(FruitType.Orange) 아마가는 길 일 것입니다.

float 유형 매개 변수를 제외하고는 아무것도 될 수 없습니다. 과일 유형은 단지 재산 일뿐입니다. 별도의 유형을 만들고 유형 매개 변수를 사용하는 것은 의미가 없습니다.

당신의 오렌지가 단지 ... 태그 ... 색상처럼 될 것인지에 따라 다릅니다. 자동차는 파란색과 빨간색 일 수 있으며 여전히 "동일한"자동차 일 수 있습니다. 오렌지가 평범한 과일이나 사과와 다른 특별한 일을 할 수 있기를 원한다면, 나는 추상 과일 클래스와 하위 클래스 오렌지를 만들고 <>를 사용합니다. 색상과 같은 태그가 있으면 열거가 잘할 수 있습니다.

그래도 클래스/structs를 사용하여 유형 검사 등이 더 쉽다고 생각합니다. 마찬가지로, 누군가가 당신의 과일 목록에 사과 유형의 과일을 추가하려고하면 어떻게 될까요? 오렌지가 될까요? 과일의 과일 유형이 주황색인지 확인해야합니까? 그렇지 않으면 어떻게 될까요? ArgumentException?

나는 수업을 위해 갈 것이라고 생각합니다. 그러나 그것은 나입니다. 사실 그것이 나라면, 나는 방금 갔을 것 같아요 decimal 측정 해야하는 무게와 다른 모든 것에 대해 ... 그리고 (완전히 잘못된 구문 등이 있지만, 당신은 희망적으로 아이디어를 얻습니다) :

class FruitList<TFruit> where TFruit : Fruit {}

abstract class Fruit {public abstract decimal Weight {get; protected set; }}

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