【问题标题】:How to convert Var from C# to VB?如何将 Var 从 C# 转换为 VB?
【发布时间】:2013-03-03 20:30:08
【问题描述】:

我发现以下对我有用的 C# 代码:

public partial class Default2 : System.Web.UI.Page 
  { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
        if (Session["EID"] != null) 
        { 
            int EmpID = (int)Session["EID"]; 

            DataClassesDataContext dc = new DataClassesDataContext(); 
            var empInfo = from emp in dc.EmployeeLogins 
                          where emp.EmployeeID == EmpID 
                          select new
                          { 
                                     emp.EmployeeLoginKey, 
                                     emp.EmployeeID, 
                                     emp.username, 
                                     emp.passwd 
                          }; 

           foreach (var v in empInfo) 
           { 
               lblID.Text = v.EmployeeID.ToString(); 
               lblLoginKey.Text = v.EmployeeLoginKey.ToString(); 
               lblPassword.Text = v.passwd.ToString(); 
               lblUserName.Text = v.username.ToString(); 

            } 
       } 
       else 
       { 
           Response.Redirect("Default.aspx"); 
        } 
    } 
} 

我使用了在线转换器转vb,编译程序时返回错误如下:

For Each v As var In empInfo

如何将var从c#转换为vb?

【问题讨论】:

  • 请在以后格式化您的代码 - 没有缩进很难阅读。
  • 什么是语句中的“empInfo” var empInfo = from emp in dc.EmployeeLogins
  • @SatpalSingh - empInfo 将是 LINQ 查询产生的匿名类型的集合。

标签: c# asp.net vb.net


【解决方案1】:

只需跳过类型声明:For Each v In empInfo

你必须设置Option Infer On

正式的For Each statement syntax在MSDN上的描述如下:

For Each element [ As datatype ] In group
    [ statements ]
    [ Continue For ]
    [ statements ]
    [ Exit For ]
    [ statements ]
Next [ element ]

【讨论】:

    【解决方案2】:
    For Each v In empInfo
    

    要让 VB 推断变量类型,只需省略 As 子句,例如

    Dim a = b + c
    

    注意:这仅在 Option InferOn 时有效。当Option InferOff 时,没有类型说明符的变量将默认为Object

    【讨论】:

      【解决方案3】:

      试试这个代码:

      For Each Dim item In empInfo
      

      【讨论】:

      • 这行不通。 Expression Expected 错误返回。
      【解决方案4】:

      试试

      foreach (Dim v in empInfo) 
                      lblID.Text = v.EmployeeID.ToString()
                      lblLoginKey.Text = v.EmployeeLoginKey.ToString()
                      lblPassword.Text = v.passwd.ToString()
                      lblUserName.Text = v.username.ToString()
       Next
      

      不要忘记在页面顶部添加以下行

      Option Strict On
      Option Infer On
      

      【讨论】:

      • 您需要同时启用Option StrictOption Infer 才能使其工作,否则代码将无法编译
      • '要么不会编译'...或者?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多