【问题标题】:C# to VB.NET array initializationC# 到 VB.NET 数组初始化
【发布时间】:2011-09-15 19:03:19
【问题描述】:

在 C# 中,我可以声明这样的数组变量

object[] Parameters;

并且初始化它像这样:

Parameters = new object[20];

在 Visual Basic 中,声明和初始化数组很容易:

Dim Parameters(19) As Object
Dim Parameters As Object(19)    ' Alternative syntax

我将如何初始化一个数组变量已经在VB.NET 中声明

Parameters = New Object(19) 不起作用。


例如,我如何将以下内容翻译成 VB.NET?

int value = 20;
object[] Parameters;
if (value > 10)
{
    Parameters = new Object[20];
}

【问题讨论】:

    标签: c# vb.net arrays


    【解决方案1】:

    与其他基本相同的 Visual Basic 代码,但我会借此机会添加一些样式:

    Dim value = 20                ' Type inference, like "var" in C#
    Dim parameters() As Object    ' Could also be "parameters As Object()"
    If value > 10 Then
        parameters = New Object(19) {}   ' That's right, Visual Basic uses the maximum index
    End If                               ' instead of the number of elements.
    

    局部变量 (parameters) 应以小写字母开头。这是一个既定的约定,有助于在 StackOverflow 中获得正确的语法高亮显示(这也适用于原始 C# 代码)。

    那么,为什么在 Visual Basic 中需要大括号 {}?在 Visual Basic 中,方法调用和数组访问都使用括号 (...)。因此,New X(4) 可能意味着:

    • 创建一个X 类型的新对象并将4 传递给构造函数,
    • 创建一个由 X 组成的 5 元素 [原文如此] 数组。

    为了区分这两种情况,您在第二种情况下使用数组初始值设定项语法。通常,大括号包含实际值:

    myArray = New Integer() {1, 2, 3}
    

    【讨论】:

      【解决方案2】:
      Dim value As Integer = 20
      Dim Parameters() as object
      If value > 10 then
        Parameters = new Object(value - 1){}
      end if
      

      【讨论】:

        【解决方案3】:

        如果你像我一样懒惰,你可以使用online converter,它会产生:

        Dim value As Integer = 20
        Dim Parameters As Object()
        If value > 10 Then
            Parameters = New [Object](19) {}
        End If
        

        如果您不像我,想学习 VB.NET,请前往 VB.NET 语法文档并开始阅读。

        【讨论】:

        • 如果您已经在 VB.NET 中编程了任意时间,您可以考虑将常量 19 替换为 (value - 1)。如果值变量值发生变化,将为您节省一些头痛/时间。这就是在线转换器的问题。
        • @CommonSense,幸运的是我在编程生涯中从未使用过这种语言。遇到情况时,我只是将代码重写为 C#,因为我无法忍受 VB.NET。
        猜你喜欢
        • 1970-01-01
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-21
        • 2018-01-15
        • 2013-09-12
        相关资源
        最近更新 更多