vb.net - 从 Visual Basic 结构中的函数返回值
问题描述
我希望帖子的标题不要太乱。我正在回顾上周的一些课程材料,关于这个特定的结构以及其中的加减函数,我只有一件事不明白:
Structure ComNum
Dim Re As Double
Dim Im As Double
Function add(ByVal br As ComNum) As ComNum
add.Re = br.Re + Re
add.Im = br.Im + Im
End Function
Function subt(ByVal br As ComNum) As ComNum
subt.Re = br.Re - Re
subt.Im = br.Im - Im
End Function
End Structure
Sub Main()
Dim a, b, c As ComNum
a.Re = 2
a.Im = 3
b.Re = 4
b.Im = 5
c = a.add(b).add(b).subt(b)
Console.WriteLine("The second number added twice and subtracted once from the first number gives {0}+{1}i", c.Re, c.Im)
End Sub
现在,我理解函数的方式是,一旦从它返回任何内容,函数的执行就会停止在返回值的确切行处,并且在执行后什么也没有。据此,它应该添加实部并退出该功能。
我知道我在这里遗漏了一件关键的事情,如果有人可以向我解释这一点,我将不胜感激。
解决方案
设置这些函数的方式是在每次调用它们时创建一个新的空 ComNum 结构(根据函数名称命名为 add 或 subt)。除非您提前手动返回它们,否则它将默认返回名为结构的函数。
Function add(ByVal br As ComNum) As ComNum
add.Re = br.Re + Re
add.Im = br.Im + Im
End Function
基本上相当于:
Dim add As New ComNum
add.Re = br.Re + Re
add.Im = br.Im + Im
Return add
尽管像 Lars 指出的那样,我不确定您为什么希望它成为一个函数而不是一个子函数。以您现在设置的方式使用它需要您执行类似的操作来获取加/减值,因为您需要捕获返回的 ComNum 对象。
Dim a As New ComNum With {.Im = 1, .Re = 1}
'Im = 6, Re = 6
a = a.add(New ComNum With {.Im = 5, .Re = 5})
做这样的事情对我来说更有意义。
Structure ComNum
Dim Re As Double
Dim Im As Double
Sub add(ByVal br As ComNum)
Re += br.Re
Im += br.Im
End Sub
Sub subt(ByVal br As ComNum)
Re -= br.Re
Im -= br.Im
End Sub
End Structure
然后你可以用这种方式调用它来更新结构,而不必捕获返回的值。
a.add(New ComNum With {.Im = 5, .Re = 5})
编辑:现在更多地了解应该如何进行练习,我会建议这样的结构:
Public Overrides Function ToString() As String
Return String.Format("Re: {0} Im: {1}", Re, Im)
End Function
然后你可以像这样调用 .ToString() 方法。虽然,只是一个想法。
Console.WriteLine("The second number added twice and subtracted once from the first number gives {0}", c.ToString())
推荐阅读
- react-native - React Native CLI 混淆代码还是缩小?
- r - 读取 .yaml 文件时在 R 函数中使用变量名的问题
- python - Python 计算器追加输入而不是添加
- javascript - 如何避免自定义指令的 [Vue 警告]?
- javascript - 根据java脚本中不同键的时间对json中的数据进行排序?
- c++ - cuda统一内存泄漏
- java - 如何读取多个 .txt 文件以使用 Scanner 进行编程?
- javascript - 如何使用纯 javascript 包装每个第 n 个 div
- python - 以特定顺序在 Pandas 中取消堆叠数据框
- nginx - 配置 nginx 多个位置不区分大小写