错误:'oItem'是'变量',但像'方法'一样使用

时间:2015-03-31 06:06:38

标签: c#

我在.NET框架中对C#编码比较陌生。我使用Visual Studio 2010.我觉得这是一个简单的问题,但无论我似乎尝试使用可见性,它都不起作用。 我想将代码从VB.Net转换为C#。它在Vb上工作正常但是当我把它写入C#时会出错。

以下是错误:' oItem'是一个变量'但是像一种方法一样使用'

请查看代码并告诉我我忽略了什么。我当然搜索了问题以及谷歌搜索,但问题是大多数这个错误与数组有关。对我而言,它不是。

在c#

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

2 个答案:

答案 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 ...

如果容器返回的对象已经是您正在投射的对象,则保存一个步骤。