1

我运行了代码分析并收到以下消息:

警告 5 CA1822:Microsoft.Performance:从未使用过“MainForm.CheckFileIfFileIsInUse(String)”的“this”参数(或 Visual Basic 中的“Me”)。将成员标记为静态(或在 Visual Basic 中为 Shared)或在方法主体或至少一个属性访问器中使用“this”/“Me”(如果适用)。D:\WORK\Update\Update\MainForm.vb

我不确定我是否理解它。这是它所指的行:

Dim testfile As String = thefilename & ".tst"

这是说它从未使用过,但在下一行我有这个:

If IO.File.Exists(testfile) Then
    IO.File.Delete(testfile)
End If

所以我知道它正在被使用。我在两个地方有同样的信息,我不明白为什么它说它从未使用过。

帮助一个困惑的新手找到自己的路:P

像往常一样感谢 Eroc

4

4 回答 4

7

它只是向您展示方法的第一行 - 该行的内容并不重要。关键是该方法不会在Me任何地方使用引用,因此您可以将其声明为Shared方法。

换句话说,而不是:

Sub CheckFileIfFileIsInUse(ByVal thefilename as String)
    Dim testfile As String = thefilename & ".tst"
    If IO.File.Exists(testfile) Then
        IO.File.Delete(testfile)
    End If
End Sub

有:

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String)
    Dim testfile As String = thefilename & ".tst"
    If IO.File.Exists(testfile) Then
        IO.File.Delete(testfile)
    End If
End Sub
于 2009-07-06T18:21:58.817 回答
2

该消息指的是整个方法CheckFileIfFileIsInUse。它告诉您该方法中的任何内容都没有访问该类的实例成员,因此您不妨声明该方法Shared

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String)
于 2009-07-06T18:24:18.560 回答
2

将您的方法 CheckFileIfFileIsInUse 声明为共享。不是声明方法的新实例,而是直接引用它。

Use This
MyClass.CheckfileIfFileisInUser(filename)

代替

 Dim newclass as Myclass
 newclass.CheckfileIfFileisInUser(filename)
于 2009-07-06T18:26:38.807 回答
0

错误是说您不需要类的实例(您的表单)来使用方法 CheckFileIfFileIsInUse

于 2009-07-06T18:23:18.033 回答