2009-07-06 41 views
1

我跑了代碼分析,得到了這樣的信息:Vb.Net CA1822

警告5 CA1822: Microsoft.Performance:在 '這個' 參數(或 '我' 在Visual Basic)的 「 MainForm.CheckFileIfFileIsInUse(String)' 從不使用。將該成員標記爲 靜態(或在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

回答

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

然後還要考慮這個方法是否真的還屬於作爲或該類型的一部分,被共享,可以更爲合理地在不同的,更通用的類型 – 2009-07-06 18:28:40

+0

一切有關這個項目在一個表單中,包括CheckFileIfFileIsInUse和它的子調用。如果情況正確,我會認爲我不需要共享?那麼我會不會忽視這個「警告」? – ErocM 2009-07-06 19:51:18

0

的錯誤是說你不需要類(表單)的情況下使用的方法CheckFileIfFileIsInUse

2

該消息指的是整個方法CheckFileIfFileIsInUse。它告訴你,該方法中沒有任何內容訪問該類的實例成員,因此您不妨聲明方法Shared

Shared Sub CheckFileIfFileIsInUse(ByVal thefilename as String) 
2

聲明您的方法CheckFileIfFileIsInUse爲共享。不是聲明方法的新實例,而是直接引用它。

Use This 
MyClass.CheckfileIfFileisInUser(filename) 

而不是

Dim newclass as Myclass 
newclass.CheckfileIfFileisInUser(filename)