성능상의 이유로 구조체가 있고 공통점이있는 일부 형식이 있습니다. 나는 그들이 오픈 타입 구조체가되도록 리팩터링 할 수 있는지 알고 싶습니다. 가능한 경우 문제가 발생할 것으로 예상되는 경우를 알고 싶습니다.오픈 타입을 구조체로 사용할 수 있습니까?
답변
예, 가능합니다. KeyValuePair<TKey, TValue>
과 같이 프레임 워크 라이브러리에서 제공하는 제네릭 형식 중 일부는 실제로 structs
입니다.
감사합니다. 나는 이것을 깨닫지 못했지만 도움이되었습니다. – Cort
업데이트 : 분명히 "개방형"은 "개방형"의 C# 사양 정의와 같은 의미는 아닙니다. "제네릭 유형"을 의미합니다.
예, 구조체는 일반적 일 수 있습니다.
질문의 두 번째 부분에 대답하려면 : 당신이 어떤 종류의 "문제"를 염두에두고 있는지 모른다. 문제가있는 것을 보여주는 예를 들어 주시겠습니까?
원래 대답은, 당신이 실제로 공개 형에 대해 물어되었다고 가정 :
는 C# 사양입니다이 점에 명확하십시오 형식 매개 변수 •
는 오픈 유형을 정의합니다.
• 요소 유형이 열린 유형 인 경우에만 인 경우 배열 유형이 열린 유형입니다.
• 구성된 형식은 형식 인수 중 하나 이상이 공개 형식 인 경우에만 열려있는 형식입니다. 중첩 된 형식으로 구성된 형식 인수 또는 해당 형식을 포함하는 형식 인수 중 하나 이상이 열려 형식 인 경우에만 중첩 된 형식이 생성 된 형식은 입니다.
여기에 있습니다. 구조체 유형은 해당 유형 또는 그 둘러싸는 유형이 유형 인수 중 하나에 대해 열린 유형을 갖는 일반 유형일 경우에만 열린 유형입니다. 예 :
struct S<T>
{
S<T> s1; // open struct type
Nullable<S<T>> s2; // another open struct type
}
class O<V>
{
class C<U> where U : struct
{
struct R
{
U u; // open type constrained to be value type
R r1; // open struct type; this is O<V>.C<U>.R
O<V>.C<S<U>>.R r2; // another open struct type.
O<int>.C<S<V>>.R r3; // another open struct type
}
}
}
하루 종일 열린 구조체 유형을 계속 만들 수 있습니다.
정보를 제공해 주셔서 감사합니다. 정말 도움이되었습니다. 내가 요구했던 "문제"는 만약 공개 제네릭 타입에서 구조체를 사용함으로써 제약이 생길 것이라는 제한을 기대해야만하는 경우였다. 이 작업을 수행하는 프레임 워크 유형이있는 것처럼 보였고, 내가 원했던 문제를 해결하기위한 접근 방식이 유사했을 수도 있습니다. – Cort
- 1. 스칼라에서 실존 타입을 언제 사용할 수 있습니까?
- 2. Pentaho가 오픈 소스라면, 그냥 사용할 수 있습니까?
- 3. KeyEventArgs를 KEYDBINPUT 구조체로 변환합니다.
- 4. C : 어떻게 파일 설명자에서 FILE 구조체로 변경할 수 있습니까?
- 5. 이진 파일을 구조체로 읽어들입니다.
- 6. 오픈 소스 프로젝트에서 SQL Server Compact Edition을 사용할 수 있습니까?
- 7. Visual Studio에 통합 된 Qt 오픈 소스를 사용할 수 있습니까?
- 8. 아이폰 애플리케이션에서 sharekit 오픈 소스를 사과에서 사용할 수 있습니까?
- 9. 공개 오픈 소스 프로젝트에 어떤 서명 방법을 사용할 수 있습니까?
- 10. Glassfish 오픈 소스 버전을 상업적으로 사용할 수 있습니까?
- 11. 오픈 소스, 프로그래밍 가능한 온라인 비디오 플레이어를 사용할 수 있습니까?
- 12. CI에 UIAutomation을 사용할 수 있습니까?
- 13. 다형성 Hibernate/JPA 엔티티의 타입을 변환 할 수 있습니까?
- 14. StyledTextCtrl에서 MultiSelect를 사용할 수 있습니까?
- 15. Spring MVC에서는 하나의 요청 처리 메소드에서 다른 리턴 타입을 사용할 수 있습니까?
- 16. JQuery AJAX로 어떤 리턴 타입을 직렬화 할 수 있습니까?
- 17. ActionScript에서 함수의 프로토 타입을 확장 할 수 있습니까?
- 18. C# 어떻게 대리인 프로토 타입을 인라인 할 수 있습니까?
- 19. 벨킨 라우터가 있는데, 프로토 타입을 볼 수 있습니까?
- 20. 함수 클로저 내에서만 객체의 프로토 타입을 적용 할 수 있습니까?
- 21. 어디서 phpmyadmin에 blob 타입을 표시 할 수 있습니까? [xampp]
- 22. 을 사용할 수 있습니까?
- 23. 타이머를 사용할 수 있습니까?
- 24. alcheMo를 사용할 수 있습니까?
- 25. jquery를 사용할 수 있습니까?
- 26. TestContext.Properties를 사용할 수 있습니까?
- 27. 을 사용할 수 있습니까?
- 28. pushState를 사용할 수 있습니까?
- 29. killProcess를 사용할 수 있습니까?
- 30. Auto_publish를 사용할 수 있습니까?
처음에는 "개방형 구조체"란 무엇입니까? –
일반을 의미합니까? –
올바른 - 일반 열기 유형. 즉 public class Box이 public struct Box 일 수 있습니까? –
Cort