rspec/rules/S4635/csharp/rule.adoc

23 lines
981 B
Plaintext
Raw Normal View History

2020-12-23 14:59:06 +01:00
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.
2020-06-30 12:49:37 +02:00
2020-12-23 14:59:06 +01:00
To avoid performance problems, ``string.Substring(startIndex)`` should not be chained with the following methods:
- ``IndexOf``
- ``IndexOfAny``
- ``LastIndexOf``
- ``LastIndexOfAny``
2020-06-30 12:49:37 +02:00
For each of these methods, another method with an additional parameter is available to specify an offset.
2020-12-23 14:59:06 +01:00
Using these methods gives the same result while avoiding the creation of additional ``String`` instances.
2020-06-30 12:49:37 +02:00
== 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);
----