情况是这样的:
我定义了一个类CheatEngineConfigReadAndWrite   
然后用如下代码初始化了数组(可见性为PUBLIC)
Dim ConfigInfo() As CheatEngineConfigReadAndWrite 
ReDim ConfigInfo(mIndex)   'mIndex是常量
而后调用如下函数(无关部分已省略)
private sub SetValue ()
Dim CI As CheatEngineConfigReadAndWrite
For Each CI In ConfigInfo
           CI.ThenEditOver = True  '该属性默认为假
Next
end sub
接下来就比较郁闷,为什么上面的代码没有更改ThenEditOver属性呢?private sub GetValue ()
Dim CI As CheatEngineConfigReadAndWrite
For Each CI In ConfigInfo
           debug.print(CI.ThenEditOver)  '该属性默认为假
Next
end sub
输出结果非常令人满意,,全是False。请高人指点啊开始我以为我定义CI时使用NEW关键字不对,可是去掉NEW还是这德行。类内部是这样实现该属性的:
Private m_ThenEditOver As Boolean     '私有变量
    Public Property ThenEditOver() As Boolean    '公有属性
        Get
            Return m_ThenEditOver
        End Get
        Set(ByVal value As Boolean)
            m_ThenEditOver = value
        End Set
    End Property难道更改ConfigInfo()里某个元素的属性使用其他方法吗??

解决方案 »

  1.   

    难道要这么做?
    dim i as integer
    for i = 0 to ConfigInfo().lenght-1
        ConfigInfo(i).ThenEditOver = True  
    next郁闷ING不测试了,睡觉先,弄大半夜了,代码检查了N多次………………
      

  2.   

    try:    private sub GetValue ()
            Dim CI As CheatEngineConfigReadAndWrite
            For Each CI In ConfigInfo
                ci=new CheatEngineConfigReadAndWrite         '这个加上试试
                CI.ThenEditOver = True  '该属性默认为假
                console.writeLine(CI.ThenEditOver)
            NextNext
        end sub
      

  3.   

    我简单的测试了下,主要是数组没用new字:        Dim cs(5) As Class1
            Dim i As Short
            
            For i = 1 To UBound(cs)
                cs(i) = New Class1      '<----这里
                cs(i).b = True
            Next        For i = 1 To UBound(cs)
                Console.WriteLine(cs(i).b)
            Next
      

  4.   

    嘿嘿
    当时,我是这样声明的
    Dim CI As New CheatEngineConfigReadAndWrite
    是不行的啊。难道NEW必须在FOR EACH里面才好?晕ING~~~~~~~~~~结贴了。。
    那个帖子也结了~~~
      

  5.   

    如果要用你的CI通过for each来访问这个数组类,是不是还应该在类里写一个方法??
      

  6.   

    :)
    难道。。需要用方法…………直接用属性来操作不可以吗。迷糊~~~~嘿嘿,那个数组是REDIM 的,然后挨个赋值出来的。。初始化它的函数是这个
    Private Sub GetConfigInfo()
            Dim mDirTmp() As String, mDirStr As String, mFileTmp() As String, mFileStr As String, mIndex As Integer
            mDirTmp = System.IO.Directory.GetDirectories(My.Application.Info.DirectoryPath())
            ListView2.Items.Clear()
            If Not (mDirTmp Is Nothing) Then
                For Each mDirStr In mDirTmp
                    mFileTmp = System.IO.Directory.GetFiles(mDirStr)
                    For Each mFileStr In mFileTmp
                        ReDim ConfigInfo(mIndex)
                        ConfigInfo(mIndex) = New CheatEngineConfigReadAndWrite
                        ConfigInfo(mIndex).FilePathName = mFileStr
                        ConfigInfo(mIndex).ReadConfig()
                        ListView2.Items.Add(ConfigInfo(mIndex).WindowName)
                        ListView2.Items(ListView2.Items.Count - 1).SubItems.Add(mFileStr.Substring(mFileStr.LastIndexOf("\") + 1))
                        ListView2.Items(ListView2.Items.Count - 1).SubItems.Add(ConfigInfo(mIndex).CodeLen)
                        ListView2.Items(ListView2.Items.Count - 1).SubItems.Add(ConfigInfo(mIndex).HookKey)
                        ListView2.Items(ListView2.Items.Count - 1).SubItems.Add(ConfigInfo(mIndex).LookEdit)
                        ListView2.Items(ListView2.Items.Count - 1).SubItems.Add(ConfigInfo(mIndex).FunctionName)
                        mIndex = mIndex + 1
                    Next
                Next
            End If
        End Sub
    。这个问题放这先,o(∩_∩)o...哈哈反正解决了,以后碰见不用EACH循环就得了。。弄不明白了我……………………改天再看看,今天累着了。。支持不到半夜2点了。哈
      

  7.   

    ConfigInfo(mIndex).ReadConfig()方法是读配置文件的,这个方法将除THENEDITOVER以外的所有属性赋值。算了,还是睡觉吧,又上瘾了再到半夜我明天就变大熊猫了