我在.NET框架中对C#编码比较陌生。我使用Visual Studio 2010.我觉得这是一个简单的问题,但无论我似乎尝试使用可见性,它都不起作用。 我想将代码从VB.Net转换为C#。它在Vb上工作正常但是当我把它写入C#时会出错。
以下是错误:' oItem'是一个变量'但是像一种方法一样使用'
请查看代码并告诉我我忽略了什么。我当然搜索了问题以及谷歌搜索,但问题是大多数这个错误与数组有关。对我而言,它不是。
foreach ( object oItem in modWeldedCylinder.ObjClsWeldedCylinderFunctionalClass.FormNavigationOrder)
{
if (oItem(clsWeldedCylinderFunctionalClass.EOrderOfFormNavigationArraylist.CurrentFormName).ToString().Equals(modWeldedCylinder.ObjClsWeldedCylinderFunctionalClass.ObjCurrentForm.Name))
{
Form oForm = null;
Form oCurrentForm = null;
}
}
在VB.Net
For Each oItem As Object In ObjClsWeldedCylinderFunctionalClass.FormNavigationOrder
If oItem(clsWeldedCylinderFunctionalClass.EOrderOfFormNavigationArraylist.CurrentFormName).ToString.Equals(ObjClsWeldedCylinderFunctionalClass.ObjCurrentForm.name) Then
Dim oForm As Form = Nothing
Dim oCurrentForm As Form = Nothing
答案 0 :(得分:0)
在oItem之后可能是[]而不是():
foreach ( object oItem in modWeldedCylinder.ObjClsWeldedCylinderFunctionalClass.FormNavigationOrder)
{
if (oItem[clsWeldedCylinderFunctionalClass.EOrderOfFormNavigationArraylist.CurrentFormName].ToString().Equals(modWeldedCylinder.ObjClsWeldedCylinderFunctionalClass.ObjCurrentForm.Name))
{
Form oForm = null;
Form oCurrentForm = null;
}
}
答案 1 :(得分:0)
变量是数据/类的占位符。它们看起来像这样:
int j = 6;
方法是函数,定义如下:
public int GetAValue()
{
return 6;
}
并像这样使用:
int x = GetAValue();
您的foreach
循环定义了变量oItem
:
foreach ( object oItem in ...
变量oItem
只能用于设置其值或使用其值或子值,不能像方法一样使用。目前,您正在使用oItem
方法oItem(...)
。注意变量名右边的()
。
我个人不懂VB,所以我无法为您翻译代码。虽然如果我对它有所了解,我会这样做:
var formname = (clsWeldedCylinderFunctionalClass.EOrderOfFormNavigationArraylist.CurrentFormName)oItem;
if (formname.ToString().Equals(ObjClsWeldedCylinderFunctionalClass.ObjCurrentForm.name))
{
// do something if true
}
看起来您正试图将对象强制转换为()
内的类,然后使用它来进行字符串比较。通过将()
放在变量名称的左侧,我们将对象转换为左侧的类,并使用它。
您可以在foreach
中缩短整个程序,如下所示:
foreach (var formname in ...
如果容器返回的对象已经是您正在投射的对象,则保存一个步骤。