Bug Report T596364
Visible to All Users

Static Code Analysis - The "Possible System.NullReferenceException" diagnostic should not be produced for variables with structure types

created 7 years ago

Please see following example, where "FooDict" contains the false positive (KeyValuePair is a structure). Compared with "FooList" the null-check is done with a class.

Visual Basic
Public Class Class1 Private _dict As New Dictionary(Of Integer, String) Public Function FooDict() As Integer Dim result As Integer If _dict IsNot Nothing Then For Each item As KeyValuePair(Of Integer, String) In _dict If item.Value IsNot Nothing Then 'CRR0027 result += item.Value.Length End If Next End If Return result End Function Public Function BarDict() As Integer Dim result As Integer If _dict IsNot Nothing Then For Each item As KeyValuePair(Of Integer, String) In _dict Dim value As String = item.Value If value IsNot Nothing Then 'No CRR0027 result += value.Length End If Next End If Return result End Function '################################################################# Private Class Class2 Property Value As String End Class Private _list As New List(Of Class2) Public Function FooList() As Integer Dim result As Integer If _list IsNot Nothing Then For Each item As Class2 In _list If item?.Value IsNot Nothing Then 'No CRR0027 result += item.Value.Length End If Next End If Return result End Function End Class
Comments (1)
DevExpress Support Team 7 years ago

    Hi Robert,

    Thanks for pointing out the problem. I have reproduced it with the help your code, I agree the "Possible System.NullReferenceException" issue should not be produced for your code
    "result += item.Value.Length", because "item" variable has structure type. We will try to fix the problem as soon as possible. Once we resolve it, we will let you know about this in the context of this ticket.

    Answers approved by DevExpress Support

    created 7 years ago

    We have fixed the issue described in this ticket and will include the fix in our next maintenance update. To apply this solution before the official update, request a hotfix by clicking the corresponding link for product versions you require.

    Note: Hotfixes may be unavailable for beta versions and updates that are about to be released.

      Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

      Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.