У меня есть следующие:Почему FxCop дает мне предупреждение «DoNotCastUnnecessarily»?
Option Strict On
Public NotInheritable Class Root
Public Overrides Function Equals(obj As Object) As Boolean
If TypeOf obj Is Root Then
Dim rt As Root = DirectCast(obj, Root)
Return rt.container.Equals(Me.container) AndAlso
rt.question.Equals(Me.question)
End If
Return False
End Function
End Class
И FxCop дает мне это предупреждение:
Warning, Certainty 95, for DoNotCastUnnecessarily
{
Target : #Equals(System.Object) (IntrospectionTargetMember)
Location : file:///C:/..../Root.vb<46> (String)
Resolution : "'obj', a parameter, is cast to type 'Root' multiple
times in method 'Root.Equals(Object)'. Cache the result
of the 'as' operator or direct cast in order to eliminate
the redundant castclass instruction."
Help : http://msdn2.microsoft.com/library/ms182271(VS.90).aspx (String)
Category : Microsoft.Performance (String)
CheckId : CA1800 (String)
RuleFile : Performance Rules (String)
Info : "Avoid duplicate casts where possible, since there is
a cost associated with them."
Created : 4/21/2015 8:45:17 PM (DateTime)
LastSeen : 4/21/2015 8:55:16 PM (DateTime)
Status : Active (MessageStatus)
Fix Category : NonBreaking (FixCategories)
}
Что я делаю неправильно? Я проверяю тип и отбрасываю, если это то же самое.