Vb.Net CA1822

Vb.Net CA1822,vb.net,code-analysis,Vb.net,Code Analysis,我进行了代码分析,得到了以下信息: 警告5 CA1822: Microsoft.Performance:this 的参数(或Visual Basic中的“Me”) 'MainForm.checkFileIffileIsUse(字符串)' 从未使用过。将成员标记为 静态(或在Visual Basic中共享)或 在方法体中使用“this”/“Me”,或 至少一个属性访问器(如果需要) 适当的D:\WORK\Update\Update\MainForm.vb 我不确定我是否理解它。这是它所指的一行:

我进行了代码分析,得到了以下信息:

警告5 CA1822: Microsoft.Performance:this 的参数(或Visual Basic中的“Me”) 'MainForm.checkFileIffileIsUse(字符串)' 从未使用过。将成员标记为 静态(或在Visual Basic中共享)或 在方法体中使用“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

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

换句话说,不是:

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
拥有:


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

换句话说,不是:

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
拥有:


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

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

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

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String)

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

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String)

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

Use This
MyClass.CheckfileIfFileisInUser(filename)
而不是

 Dim newclass as Myclass
 newclass.CheckfileIfFileisInUser(filename)

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

Use This
MyClass.CheckfileIfFileisInUser(filename)
而不是

 Dim newclass as Myclass
 newclass.CheckfileIfFileisInUser(filename)

然后再考虑这个方法是否仍然属于这个类型的一部分,或者被共享,可以更逻辑地与一个不同的、更通用的类型相关联,这个项目在一个窗体中,包括CuffFielfIrIsIn使用和子调用。如果情况正确的话,我认为我不需要做出分享?那么我不会忽略这个“警告”吗?你不必让它被共享,不-只是它不需要是一个实例方法。建议您将它设置为一个共享方法,以避免它依赖于实例本身的外观?我想这是为了可读性/可维护性?我是否应该将此作为标准,即使它可能不在窗体之外使用,然后也考虑该方法是否仍然属于该类型的一部分,或者被共享,可以更逻辑地与另一种类型相关联,更通用的类型此项目中的所有内容都在一个表单中,包括CheckFileIfFileIsInUse和调用它的子表单。如果情况正确的话,我认为我不需要做出分享?那么我不会忽略这个“警告”吗?你不必让它被共享,不-只是它不需要是一个实例方法。建议您将它设置为一个共享方法,以避免它依赖于实例本身的外观?我想这是为了可读性/可维护性?那么,我是否应该把它作为一种标准,即使它可能不会在表单之外使用?这个答案和公认的答案帮助我更好地理解它。谢谢你的回复。这个答案和被接受的答案帮助我更好地理解它。谢谢你的回复。