Vb.Net CA1822

时间:2009-07-06 18:19:33

标签: vb.net code-analysis

我运行了代码分析并得到了这条消息:

  

警告5 CA1822:   Microsoft.Performance:'this'   参数(或Visual Basic中的“我”)   'MainForm.CheckFileIfFileIsInUse(字符串)'   从未使用过。将该成员标记为   静态(或在Visual Basic中共享)或   在方法体中使用'this'/'Me'或   至少有一个属性访问者,如果   适当。 d:\ WORK \更新\更新\ MainForm.vb

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

Dim testfile As String = thefilename & ".tst"

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

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

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

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

像往常一样感谢 Eroc

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

该消息指的是整个方法CheckFileIfFileIsInUse。它告诉你,该方法中没有任何东西可以访问该类的实例成员,所以你不妨声明方法Shared

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String)

答案 2 :(得分:2)

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

Use This
MyClass.CheckfileIfFileisInUser(filename)

而不是

 Dim newclass as Myclass
 newclass.CheckfileIfFileisInUser(filename)

答案 3 :(得分:0)

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