【问题标题】:Need Explanation of VB.Net CodeVB.Net代码需要说明
【发布时间】:2015-04-18 16:53:54
【问题描述】:

在下面的教程示例代码中,我了解其中大部分是如何工作的。不过,有几件事我不明白。请帮助我理解其中一些字符的用途以及它们的用途。我将在下面解释我不明白的地方。

Module paramByref
Sub swap(ByRef x As Integer, ByRef y As Integer)
  Dim temp As Integer
  temp = x ' save the value of x 
  x = y    ' put y into x 
  y = temp 'put temp into y 
End Sub
Sub Main()
  ' local variable definition 
  Dim a As Integer = 100
  Dim b As Integer = 200
  Console.WriteLine("Before swap, value of a : {0}", a)
  Console.WriteLine("Before swap, value of b : {0}", b)
  ' calling a function to swap the values '
  swap(a, b)
  Console.WriteLine("After swap, value of a : {0}", a)
  Console.WriteLine("After swap, value of b : {0}", b)
  Console.ReadLine()
End Sub
End Module

我不明白为什么需要x、y 和temp。为什么不保留a 和b 的声明并交换值?

另外,在Console.WriteLine 上,我知道{0} 是第n 个引用或索引位置,但逗号建议输出其他内容。是说在 0 索引中输出 a 的值吗?如果是这样,只能有一个零索引,那么为什么下一行引用零索引的值?还是我在这方面都错了?任何解释都将不胜感激......请为这个新手降低你的答案。

【问题讨论】:

标签: vb.net


【解决方案1】:

x、y 和 temp 的原因是为了演示如何进行交换。你的问题问

为什么不保留 a 和 b 的声明并交换值

在这种情况下,你没有做任何递增,当然你可以在之后说b = 100和a = 200,但是如果你这样做的话,在循环中说并不断交换它们,如果你这样做的话

p>
a = b
b = a

您将拥有 a=100、b=100,因为您将 b = a 的值设置为 100,然后将 a 设置为相同的值,因此它仍然是 100。这就是您需要 temp 值的原因。

关于console.writeLine,它正在索引第0个索引是绝对正确的,所以在第一个示例中,它是一个,但是它可以在下一行中重用,因为它是一个完全独立的行的代码。这些 console.writeLines 中的每一个都可以独立存在,因此这些值是逐行索引的

【讨论】:

    【解决方案2】:

    您需要一个临时文件来存储第一个 var 中的值,这样当您用第二个 var 中的值覆盖它时就不会丢失它。一旦第二个 var 的值被转移到第一个 var 中,存储在 temp 中的值(来自原始第一个 var)就可以转移到第二个 var 中(覆盖原始值)。

    这是创建自定义排序例程时的常用方法,这些例程将来自不同位置的值随机排列在一个数组中。

    【讨论】:

      【解决方案3】:

      a 和b 是仅在方法Main() 中可见的变量。不能从不同的方法访问它们。另一方面,x、y 和 temp 是仅在方法 swap() 中可见的变量。更准确地说,x 和 y 是方法的参数。关键字ByRef 表示参数是对变量的引用。 IE。当您调用swap(a, b) 时,x 成为对变量a 的引用,y 成为对变量b 的引用。您可以像使用其他变量一样使用引用。不同的是,当你在swap() 中更改x 时,Main 中的a 会相应地发生变化。

      Console.WriteLine() 方法接受一个字符串参数和任意数量的附加参数。 {0} 是这些附加参数列表的索引。例如。 Console.WriteLine("{0} {1} {2}", 100, 200, 300) 将输出 100 200 300。而Console.WriteLine("{2} {1} {0}", 100, 200, 300) 将输出300 200 100。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2016-04-17
        • 2017-12-24
        • 2020-11-07
        • 1970-01-01
        相关资源
        最近更新 更多