2013-05-07 13 views
7

Aşağıdaki örnek kodu VB olarak tanımlayan aynı örtüyü kullanarak C# 'ye nasıl dönüştüreceğinizi anlamaya çalışıyorum. Düğmeyi ve genel denetimi iki nesne olarak tanımlayabildiğimi ve çalışmasını sağlayabildiğimi biliyorum, ancak C# gibi aynı değişkeni "ctlHTML" yi VB çalışmaları gibi kullanmak istiyorum. Birisi bu konuda yardımcı olabilir mi?Bu VB kodunu C# ile aynı değişken kullanarak nasıl çalıştırabilirim?

Sub MySub(varInput As String, pnl As Panel) 
    Dim ctlHTML = Nothing 
    Select Case varInput 
     Case "btn" 
      ctlHTML = New HtmlButton 
     Case "lbl" 
      ctlHTML = New HtmlGenericControl() 
    End Select 
    With ctlHTML 
     .Style.Add("font-size", "14px") 
    End With 
    pnl.Controls.Add(ctlHTML) 
End Sub 

cevap

4

Doğrudan kodu değiştiremezsiniz. Değişkeninize bir tür vermek zorundasınız. tüm üyelerinize destekleyen miras zincirinde sınıf en yüksek HtmlControl olacaktır: Style özelliği değiştirmek için

HtmlControl control = null; 
switch(varInput) 
{ 
    case "btn": 
     control = new HtmlButton(); 
     break; 
    case "lbl": 
     control = new HtmlGenericControl(); 
     break; 
} 

if(control != null) 
{ 
    control.Style.Add("font-size", "14px"); 
    pnl.Controls.Add(control); 
} 
+0

sadece iki durumda, ben üçlü ifadesini kullanıp anahtarı kaybedecek. – SimpleVar

+1

@YoryeNathan - Gerçek kod hakkında herhangi bir varsayımda bulunmayacağım. Bu sadece bir örnek olabilirdi. OP optimizasyon yapmak istiyorsa, daha sonra yapılabilir. –

+1

Yanıtınızda bir değişiklik önermediniz, sadece cevabınıza ek olarak OP'ye yardımcı olabilecek ekstra bilgileri sağladınız. – SimpleVar

4

, en azından kontrol bir HtmlControl olması gerekiyor. Bu nedenle, ctlHtml değişkenini bu tür olarak bildirmeniz gerekir.

Ayrıca, ctlHtml'un düzgün şekilde başlatıldığından emin olmak için de kontrol etmelisiniz.

ben kod aşağıdaki gibi görünmelidir inanıyoruz: Her iki HtmlControl devralan

public void MySub(string varInput, Panel pnl) 
{ 
    HtmlControl ctlHtml; 
    switch(varInput) 
    { 
     case "btn": 
      ctlHtml = new HtmlButton(); 
      break; 
     case "lbl": 
      ctlHtml = new HtmlGenericControl(); 
      break; 
     default: 
      ctlHtml = null; 
      break; 
    } 
    if (ctlHtml != null) 
    { 
     ctlHtml.Style.Add("font-size", "14px"); 
     pnl.Controls.Add(ctlHtml); 
    } 
}