【发布时间】:2017-08-28 05:36:35
【问题描述】:
这是我的程序:
Public Class Form2
Public Class Component
Public Shared Methane, Ethane As New Component
Public Shared ComponentList As New List(Of Component)(New Component( {Methane, Ethane})
Public Property Mole As Double
Public Shared MoleSum = ComponentList.Sum(Function(item) item.Mole)
Public Property NMole As Double = Mole/Molesum
End Class
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Double.TryParse(TextBox1.Text, Component.Methane.Mole)
End Sub
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
Double.TryParse(TextBox2.Text, Component.Ethane.Mole)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox(Component.Methane.NMole)
End Sub
End Class
所以问题是:
- 像我一样在另一个属性中使用属性是否正确?如果不是,我该如何做同样的功能?
- 如果在
Component类中提及变量Molesum,则它不起作用。这有什么问题?
【问题讨论】:
-
请定义“正确使用”。一种定义是,如果它编译,它就是正确的。如果将
New Component( {Methane, Ethane}替换为New Component() {Methane, Ethane}并明确定义MoleSumAs Double,则该代码将编译。这一切是否意味着并做你想要的是一个不同的问题。 -
如果你使用Option Strict On,它会为你指出一些问题。
-
您是否打算在任何时候将
NMole设为Mole/Molesum的当前 值?还是只打算将其初始化为Mole/Molesum的初始值,然后手动更新?我相信它会按照编码完成后者。同样,您是否打算将Molesum用作函数,还是将其用作初始值为ComponentList.Sum...的字段?同样,我相信它会是后者作为编码。 -
感谢您的回复。所以基本上我想实现以下内容:我将有很多变量,如甲烷、乙烷、丙烷、丁烷等。它们都有一些摩尔质量、校正摩尔质量等。所以,我希望能够做一些计算所有变量的一个(或多个)字段。例如,我需要计算所有变量(一些.Mole)的摩尔质量总和(Molesum),然后对所有变量执行以下操作:.Nmole= .Mole/Molesum。我认为在属性中这样做会很聪明,以避免每个变量都输入过多
-
正确 - 我的意思是在编码方面,因为我刚开始使用 vb.net 和编码,我想我的想法和实现可能是错误的和低效的。因此,您的任何 cmet 都会受到高度赞赏。
标签: vb.net oop properties