rspec/rules/S4635/csharp/rule.adoc
2020-12-23 14:59:06 +01:00

23 lines
981 B
Plaintext

Looking for a given substring starting from a specified offset can be achieved by such code: ``str.Substring(startIndex).IndexOf(char1)``. This works well, but it creates a new ``string`` for each call to the ``Substring`` method. When this is done in a loop, a lot of ``strings`` are created for nothing, which can lead to performance problems if ``str`` is large.
To avoid performance problems, ``string.Substring(startIndex)`` should not be chained with the following methods:
- ``IndexOf``
- ``IndexOfAny``
- ``LastIndexOf``
- ``LastIndexOfAny``
For each of these methods, another method with an additional parameter is available to specify an offset.
Using these methods gives the same result while avoiding the creation of additional ``String`` instances.
== Noncompliant Code Example
----
str.Substring(StartIndex).IndexOf(char1); // Noncompliant; a new string is going to be created by "Substring"
----
== Compliant Solution
----
str.IndexOf(char1, startIndex);
----