2009-07-06 6 views
1

J'ai couru une analyse de code et a ce message:Vb.Net CA1822

Avertissement 5 CA1822: Microsoft.Performance: Le 'ce' paramètre (ou 'moi' dans Visual Basic) de ' MainForm.CheckFileIfFileIsInUse (String) ' n'est jamais utilisé. Marquez le membre en tant que statique (ou partagé en Visual Basic) ou utilisez 'ceci'/'Moi' dans le corps de méthode ou au moins un accesseur de propriété, si approprié. D: \ WORK \ Update \ Update \ MainForm.vb

Je ne suis pas sûr de le comprendre. Ceci est la ligne qu'il fait référence à:

Dim testfile As String = thefilename & ".tst" 

Il est dit qu'il est jamais utilisé, mais dans la ligne suivante je ceci:

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

donc je sais qu'il est utilisé. J'ai ce même message à deux endroits, je ne comprends pas pourquoi il dit qu'il n'est jamais utilisé.

aide un débutant confus trouver son chemin: P

Merci, comme d'habitude, Eroc

Répondre

7

Il est tout simplement vous montrer la première ligne de la méthode - le contenu de cette ligne est sans importance. Le fait est que la méthode n'utilise pas la référence n'importe où, donc vous pouvez la déclarer comme méthode Shared à la place.

En d'autres termes, au lieu de:

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 

ont:

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

Et puis considérer également si cette méthode appartient vraiment encore dans le cadre de ce type ou, étant partagé, pourrait plus être logiquement associée à un autre type plus générique –

+0

Tout en Ce projet est sous une forme comprenant le CheckFileIfFileIsInUse et le sous appelant. Je pense que je n'ai pas besoin de faire est partagé si c'est le cas correct? N'aurais-je pas ignoré cet 'avertissement' alors? – ErocM

+0

Vous n'avez * * pas * pour le faire partager, non, c'est juste qu'il n'a pas * besoin * d'être une méthode d'instance. La suggestion est que vous en fassiez une méthode partagée pour éviter * l'apparence * que cela dépende de l'instance elle-même. –

0

L'erreur dit que vous n'avez pas besoin d'une instance de la classe (formulaire) d'utiliser la méthode CheckFileIfFileIsInUse

2

Le message fait référence à l'ensemble de la méthode CheckFileIfFileIsInUse. Il vous indique que rien dans cette méthode n'accède aux membres d'instance de la classe, donc vous pouvez aussi bien déclarer la méthode Shared.

2

Déclarez votre méthode CheckFileIfFileIsInUse comme partagée. Au lieu de déclarer une nouvelle instance de la méthode, il suffit de la référencer directement.

Use This 
MyClass.CheckfileIfFileisInUser(filename) 

Au lieu de

Dim newclass as Myclass 
newclass.CheckfileIfFileisInUser(filename) 
+0

Cette réponse et la réponse acceptée m'ont aidé à mieux le comprendre. Merci pour la réponse. – ErocM