C#


CSHARP.COMPARE.EQUALS.CN : Comparison to Class Names (C#)

Summary

Class names are compared with Equals(). This is not a reliable check for class equality, because multiple classes might have the same name.

Properties

Class Name Comparison to Class Names (C#)
Significance reliability
Mnemonic CSHARP.COMPARE.EQUALS.CN
Categories
CWE CWE:486 Comparison of Classes by Name
Availability Available for C# only.
Enabling Checks for this warning class are enabled by default. To disable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += discard class="Comparison to Class Names (C#)"

Example

using System;
using System.Diagnostics;

namespace DocumentationExamples {
    public class BadEq {
        public static void Main(string[] args) {
            string s = "";
            object o = "";
            if (s.GetType().Name.Equals(o.GetType().Name)) // 'Comparison to Class Names (C#)' warning issued here
                // ... 
            }
        }
    }
}

Resolution

To check if two objects have the same class, use the getType() method and the == operator.

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.