2012-02-28 19 views
0
class constType 
{ 
    public static const Type messageType = typeof(int); // HOW TO DO THIS? 1st mark 

    public string[] GetArraySomehow() 
    { 
     return new string[sizeof(messageType)]; // HOW TO DO THIS? 2nd mark 
    } 
} 

class testTypeInClass 
{ 
    public void test(constType.messageType message) // HOW TO DO THIS? 3rd mark 
    { 

    } 
} 

好吧,這真是奇怪而奇怪我知道但我該怎麼做?如何將類型存儲爲變量並在參數類型中使用它們?

  • 1日馬克:我不得不店INT的類型爲const變量,並用它laterç
  • 第二個標誌:我必須讓存儲類型的大小(?多少字節做它等於)
  • 第3個標記:我必須使用它作爲參數類型。

那麼爲什麼我必須這樣做這樣的事:

我必須存儲類型(不那麼寬,只是我知道我會用int8,16,32等) 和必須知道它究竟是什麼字節(1,2,4等)。

那麼首先我有我的一個類的方法,它使用switch語句和:

這樣的:

public string test (int messageIndex) 
    { 
     switch (messageIndex) 
     { 
      case 0: 
       return "etc.. etc.."; 
      case 1231412: 
       return "whatever"; 
     } 
    } 

首先我有一些像這樣的方法:

public int fixForSwitchStatement(byte[] messageIndex) 
    { 
     byte[] RValue = new byte[4]; 

     for (int i = 0; i <= messageIndex.Length - 1; i++) 
     { 
      RValue[i] = messageIndex[i]; 
     } 
     for (int i = messageIndex.Length; i <= 4 - messageIndex.Length - 1; i++) 
     { 
      RValue[i] = 0; 
     } 

     return BitConverter.ToInt32(RValue, 0); 
    } 

我正在傳遞字節或短切換語句,然後我轉換爲int(int是我指定的類型),我想重新設計這樣。

public string test (/* [what's the case limit? that I've determined?] */ messageIndex) 
    { 
     switch (messageIndex) 
     { 
      case 0: 
       return "etc.. etc.."; 
      case 1231412: 
       return "whatever"; 
     } 
    } 

因爲我不想再使用fixSwitch ...方法。我只需要一個指定類型的所有這些概念。

爲什麼我必須使用fixSwitch而不是類似(int)somethingByte的類型轉換?

那麼在我的一個類中有一個叫做communicationSize的東西,它的messageIndex事件的最大字節數是我必須聲明的。這是爲我的服務器客戶端項目。有一個messageIndex被用作請求索引,它是服務器和客戶端之間的請求。我用字節限制它。用於保存連接的一些數據空間。

// still is being written 
+0

什麼是您的實際使用情況?我相信我們可以提供比這更好的方法。 – ken2k 2012-02-28 12:51:42

+0

一些C語言的氣味:)你想在這裏實現什麼? – Tigran 2012-02-28 12:51:56

+0

我不知道C順便說一句,這是我的第二語言(第一名是VB.NET)。很難解釋爲什麼我需要這樣的東西,但我正在去解釋。 – haxxoromer 2012-02-28 12:55:03

回答

1

我不確定目標是什麼,問題在此期間進行了編輯,但繼承了一些使用泛型的示例代碼,可能會對您有所幫助。

class constType<T> where T : struct 
{ 
    public T GetT() 
    { 
     return new T(); 
    } 

    public string[] GetArraySomehow() 
    { 
     var len = Marshal.SizeOf(typeof(T)); 
     return new string[len]; 
    } 
} 

class testTypeInClass 
{ 
    public void test<T>(T message) where T : struct 
    { 

    } 
} 

class MyClass 
{ 
    void Test() 
    { 
     var constType = new constType<int>(); 

     var typeInClass = new testTypeInClass(); 

     var t = constType.GetT(); 

     typeInClass.test(t); 

    } 
} 
+0

首先感謝發佈,無論如何,我打算用泛型做到這一點,只是想知道是否可以在某些我已經發布 – haxxoromer 2012-02-28 13:41:34

相關問題