在C#和Visual Basic中的代码等效性及VB代码结构

11 浏览
0 Comments

在C#和Visual Basic中的代码等效性及VB代码结构

我对C#和VB编码相当新。我需要创建一个描述化学反应的.Net框架扩展,以便在HYSYS中重复使用。有一个2004年的教程,其中有一个VB的教程实现。我试图将VB的结构转换为C#,但是在With....End With的实现中感到困惑。你能描述一下这里发生了什么吗,因为没有赋值关系?

参考代码如下,教程pdf链接为https://sites.ualberta.ca/CMENG/che312/F06ChE416/HysysDocs/AspenHYSYSCustomizationGuide.pdf(第3章)。

With hyContainer
    .SetReactionPropertyState rpReactants, vsCalculated
    .SetReactionPropertyState rpStoichiometricCoefficients, vsCalculated
    .SetReactionPropertyState rpMinTemperature, vsCalculated
    .SetReactionPropertyState rpMaxTemperature, vsCalculated
    .SetReactionPropertyState rpReactionBasis, vsCalculated
    .SetReactionPropertyState rpReactionPhase, vsCalculated
    .SetReactionPropertyState rpBaseReactant, vsCalculated
    .SetReactionPropertyState rpBasisConversion, vsCalculated
    .SetReactionPropertyState rpRateConversion, vsCalculated
End With

0
0 Comments

在C#和Visual Basic中存在代码等效性的问题。原因是C#和Visual Basic是不同的编程语言,它们有不同的语法和结构。在给出的例子中,C#中的代码与Visual Basic中的代码不完全等效。具体来说,C#中没有与Visual Basic中的with相对应的等效语法。

要解决这个问题,可以使用以下方法之一:

1. 将C#代码中的with语句替换为适当的C#语法。在给出的例子中,可以将with语句替换为多个单独的语句,如下所示:

hyContainer.SetReactionPropertyState(rpReactants, vsCalculated);
hyContainer.SetReactionPropertyState(rpStoichiometricCoefficients, vsCalculated);
// etc

2. 将整个C#代码块包装在with语句的等效语法中。这可以使用C#的匿名对象来实现,如下所示:

hyContainer = new 
{
    SetReactionPropertyState = new Action(hyContainer.SetReactionPropertyState)
};
hyContainer.SetReactionPropertyState(rpReactants, vsCalculated);
hyContainer.SetReactionPropertyState(rpStoichiometricCoefficients, vsCalculated);
// etc

通过采用以上方法之一,可以解决C#和Visual Basic之间的代码等效性问题,并确保代码在两种语言中具有相同的功能。

0