2012-06-15 22 views
6

VBA (ve VB olduğunu varsayalım) daha fazla bellek aldığına inandığım, ancak çeşitli veri türlerini kapsadığına inanıyorum.Tür: C#

C# 'da bir eşdeğer var mı? bir windows formunda

Tamam çalışır böylece z türünü değiştirebilir nasıl, ben vardı şu demek

private void uxConvertButton_Click(object sender, EventArgs e) 
    { 
     int x = 10; 

     byte j = (byte)x; 
     upDateRTB(j); 

     long q = (long)x; 
     upDateRTB(q); 

     string m = x.ToString(); 
     upDateRTB(m); 
    } 

    void upDateRTB(long z) { 
     MessageBox.Show(this,"amount; "+z); 
    } 

cevap

10
void upDateRTB(object z) { 
    MessageBox.Show(this, "amount; " + Convert.ToString(z)); 
} 
2

dinamik anahtar kelime veya nesne türü size varyant davranışı verebilir istediğiniz ama: o arkadaşları Çünkü

void upDateRTB(string z) { 
    MessageBox.Show(this,"amount; " + z); 
} 

: Bu durumda

Ben fonksiyonu değiştirmek istiyorum Metodun ihtiyacı var.

+0

tamam - soruyu değiştireyim. – whytheq

+0

Sadece parametreyi dizgiye dönüştürmek işe yaramıyor - deneyin. O zaman başka bir kodu değiştirmem gerek. Ben sadece – whytheq

+0

itiraz etmek için değiştirmeye gidiyorum Göz önünde bulundurmanız gereken bir şey fonksiyonun kullanımıdır. HERHANGİ tür kabul etmesini ister misiniz? –

1

Eğer C# yaklaşık "varyant" türü konuşuyorsanız, içinde dynamic tip bir göz atın .net 4.0

Ama MessageBox.Show

yılında z.ToString() kullanmak yeterli olacaktır senin görevin çözümü için
2

"amount; "+z, z numaralı telefondan ToString yöntemini örtülü olarak çağırır. Yani türünü object kullanabilirsiniz:

void upDateRTB(object z) { 
    MessageBox.Show(this,"amount; "+z); 
} 

Ayrıca dinamik kullanabilirsiniz, ancak ben nokta görmüyorum: İsterseniz bir nesne parametresi hepsini kabul ediyorum

void upDateRTB(dynamic z) { 
    MessageBox.Show(this,"amount; "+z); 
} 
+0

, "dinamik" daha fazla genel gider var mı? Bunun yerine 'object' seçtiniz mi? – whytheq

+0

evet, sahip. Dinamik çalışma zamanı türünü anlamaya ihtiyacı –

5

ama kesinlikle yazılı değişkenleri tutmak (ve bu süreçte boks önlemek) girerek, generics kullanabilirsiniz:

void upDateRTB<T>(T z) { 
    MessageBox.Show(this,"amount; "+ Convert.ToString(z)); 
} 

yöntem çağrıları, çünkü tam da aynı kalır olabilir Derleyici, belirtilen parametreye göre jenerik türünü çözebilir.

+0

Ben bir C# newbie; "generics" için bu sözdizimi: (T z) 'henüz karşılaştığım bir şey değil – whytheq