2012-04-01 1 views
1

C# XNA Xbox, in this case optional parameters are not optionalC# XNA X 박스 HashSet의와 튜플

덕분에 선택적 매개 변수는 현재 작업을하거나 일을해야하는 경우 적어도 표시되는 위의 질문에서 도움이됩니다.

그러나 이제는 HashSet 및 Tuples에 붙어있어 사용할 수없는 것으로 보입니다.

두 클래스 모두 내 버전을 쓸 수 있습니다. 튜플을 처음부터 그리고 HashSet을 사용하여 Dictonary (아마도). 그러나 나는 오히려 표준 것들을 계속 사용하고 싶습니다.

이러한 클래스가 라이브러리의 PC 버전에있는 경우 PC C# 라이브러리의 코드를 복사하여 내 코드에 붙여 넣을 수 있습니까?

"Go To Definition"을 사용하면 "HashSet [metadata from]"이되며 클래스 인터페이스를 표시하지만 구현이없는 것처럼 C++ 헤더 파일입니다.

여기에 계속 : stackoverflow.com/questions/10246572/c-sharp-hashset2-to-work-exactly-like-the-standard-c-sharp-hashset-not-compilin

+0

Microsoft는 XNA의 바이너리로 디버그 기호를 릴리스하지 않으므로 구현을 볼 수 없습니다. 그렇지 않으면 XNA의 모든 소스 코드를 제거하게 될 것입니다. 코드와 똑같은 이름, 유형, 속성 ...을 볼 수 있지만 코드는없고 전용 멤버가 없습니다. – Elideb

답변

2

아주 기본적인 데이터 구조 당신이 당신의 자신의 수를 모두. 여기

Here is a HashSet.

그리고

는 필요에 따라 튜플 단지 더 많은 항목을 추가 할 수 있습니다.

public class Tuple<T1, T2> 
{ 
    public T1 Item1 { get; set; } 
    public T2 Item2 { get; set; } 

    public Tuple(T1 item1, T2 item2) 
    { 
     Item1 = item1; 
     Item2 = item2; 
    } 
} 
+0

위와 연결된 HashSet 구현은 많은 미사용 값을 저장한다는 것을 의미합니다. 사용 된 UInt16 대신 bool을 사용하면 일부가 무효화 될 수 있습니다. 내장 튜플은 이와 같이 구현 되었습니까? "public T1 Item1 {get; set;}"은 속성에 대한 정의처럼 보이며 저장된 데이터는 어디에 있습니까? 또한 원래의 HashSet 정의를 복사하는 것은 Dictionary를 사용하여 다른 추상화 레이어를 만드는 것보다 더 잘 수행되어야하는 것처럼 보입니다. 나는 평상시에는 신경 쓰지 않지만 성능에 민감한 비정상적인 상황에서 사용될 수 있습니다. – alan2here

+1

HashSet은 항상 많은 미사용 값을 저장하므로 공간이 중요하다면 사전에 키 값을 저장하는 사전을 사용하면 다른 것을 빌드 할 수 있습니다. '{get; set;}'은 [자동 구현 된 속성]입니다 (http://msdn.microsoft.com/en-us/library/bb384054.aspx). –

+0

감사합니다. 자동 구현 속성이 유용 할 것입니다. ClassicThunder의 Tuple은 바닐라 C# 튜플보다 훨씬 더 가변적 인 것처럼 보입니다. Dosn't는 그것이 평등과 함께 작동하는 것처럼 보입니다. 아마 나는 그것을 구현해야 할 것입니다. 그리고 나는 아직 생각하지 않은 다른 것들을 구현해야합니다. HashSet이 사물을 부수 지 않게 충분히 비슷한 인터페이스를 가지기를 바랍니다. 왜 내가 바닐라 것들을 복사 할 수 없는지 모르겠다. 솔루션 탐색기 "프로그램 Files \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ Profile \ Client \ System.Core.dll"을 사용하여 프로젝트에 새로운 참조를 추가하면 어떻게됩니까? – alan2here

1

아니요, PC 바이너리를 가져 와서 Xbox에서 사용할 수 없습니다. 그들은 다른 하드웨어 용으로 컴파일되며 XNA X360 프로젝트는 PC dll 사용을 거부합니다.

아마도 이러한 클래스의 여러 구현이있을 수 있습니다. 나는 CodePlex의 많은 물리학과 엔진 프로젝트에 이미 그것들이 있으며, 그것들을 고르는 것은 완벽하게 합법적이라고 확신한다.

+0

이 정보를 제공해 주셔서 감사합니다. – alan2here