2017-04-03 47 views
0

下面是我的程序:Vb.net物业使用其他属性

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 

所以问题是:

  1. 这是否正确使用财产的另一个属性像我一样?如果不是,我该怎么做同样的功能?
  2. 如果在Component类中提及变量Molesum不起作用。那有什么问题?
+1

请界定 “正确使用”。一个定义是,如果它编译,这是正确的。如果用'Ne​​w Component(){Methane,Ethane}'替换'New Component({Methane,Ethane}')并且明确定义'MoleSum' As Double',那么这段代码就会被编译。是否所有的意思和做你想做的事都是一个 – GSerg

+0

如果您使用[Option Strict On](https://msdn.microsoft.com/zh-cn/library/zcd4xwzs.aspx),它会为您指出一些问题。 –

+0

您是否打算购买'NMole'成为Mole/Molesum的* current *值,或者你只是打算将它初始化为'Mole/Molesum'的初始值,然后手动更新它?我相信它会同样,你是否打算将'Molesum'作为一个函数,或者它是一个初始值为“ComponentList.Sum ...”的字段?我相信它将是后者, – Craig

回答

0

对于谁的人有同样的问题,以下解决方案:

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 Function MoleSum() As Double 
      Return Component.ComponentList.Sum(Function(item) item.Mole) 
     End Function 
       Public ReadOnly Property Nmole As Double 
      Get 
       Return MoleSum() 
      End Get 
     End Property 
    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