【问题标题】:How can I make this VB code work in C# using the same variable?如何使用相同的变量使这个 VB 代码在 C# 中工作?
【发布时间】:2013-05-02 01:44:15
【问题描述】:

我试图弄清楚如何使用与 VB 相同的隐式定义将以下示例代码转换为 C#。我知道我可以将按钮和通用控件定义为两个对象并使其工作,但我想在 C# 中使用相同的变量“ctlHTML”,就像 VB 一样。有人可以帮忙吗?

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

【问题讨论】:

    标签: c# vb.net vb.net-to-c#


    【解决方案1】:

    您将无法直接转换代码。你必须给你的变量一个类型。支持所有成员的继承链中最高的类是HtmlControl

    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);
    }
    

    【讨论】:

    • 如果只有两种情况,我会使用三元表达式并失去开关。
    • @YoryeNathan - 我不会对实际代码做任何假设。这只能是一个例子。如果 OP 想要进行优化,可以稍后再做。
    • 没有建议更改答案,只是提供了可能对 OP 有帮助的额外信息,以及您的答案。
    • 谢谢。我以某种方式忽略了 HtmlControl。
    【解决方案2】:

    要修改Style 属性,控件至少需要是HtmlControl。所以你需要将变量ctlHtml声明为那个类型。

    您还应该检查以确保 ctlHtml 已正确初始化。

    我相信你的代码应该是这样的:

    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);
        }
    }
    

    【讨论】:

      【解决方案3】:

      由于HtmlGenericControlHtmlButton 都继承自HtmlControl,您可以将ctlHTML 声明为该类型(HtmlControl),它会起作用。

      请看这里:http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlcontrol.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-12
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        • 2013-07-24
        • 2012-11-14
        • 1970-01-01
        相关资源
        最近更新 更多