IndexOf function should check the first character

This page is not yet available in Spanish. We are working on its translation.
If you have any questions or feedback about our current translation project, feel free to reach out to us!

Metadata

ID: csharp-best-practices/indexof-checks

Language: C#

Severity: Warning

Category: Error Prone

Description

When using Indexof or LastIndexOf, using > 0 may miss the first item of the collection (string, list, etc). Instead, the code should use >=0 to take the first element into account.

Non-Compliant Code Examples

using System.Net;

class MyClass {
    public static void routine(string str, string str2)
    {
        str.IndexOf(str2)>0;
        str.IndexOf(str2)>0;
        str.LastIndexOf(str2)>0;
    }
}

Compliant Code Examples

using System.Net;

class MyClass {
    public static void routine(string str, string str2)
    {
        str.IndexOf(str2)>=0;
        str.IndexOf(str2)>=0;
        str.LastIndexOf(str2)>=0;
        if (serverPackages.Any(x => x.Version.CompareTo(currentVersion) > 0)) {
            
        }
    }
}
https://static.datadoghq.com/static/images/logos/github_avatar.svg https://static.datadoghq.com/static/images/logos/vscode_avatar.svg jetbrains

Seamless integrations. Try Datadog Code Analysis