
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
74 lines
1.6 KiB
Plaintext
74 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Because the ``++is++`` operator performs a cast if the object is not null, using ``++is++`` to check type and then casting the same argument to that type, necessarily performs two casts. The same result can be achieved more efficiently with a single cast using ``++as++``, followed by a null-check.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,csharp]
|
|
----
|
|
if (x is Fruit) // Noncompliant
|
|
{
|
|
var f = (Fruit)x; // or x as Fruit
|
|
// ...
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,csharp]
|
|
----
|
|
// C# 6
|
|
var f = x as Fruit;
|
|
if (f != null)
|
|
{
|
|
// ...
|
|
}
|
|
// C# 7
|
|
if (x is Fruit fruit)
|
|
{
|
|
// ...
|
|
}
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Primary: Replace this type-check-and-cast sequence with an "as" and a null check.
|
|
|
|
Secondary: Replace this cast
|
|
|
|
|
|
=== Highlighting
|
|
|
|
* Primary: on the "is" check
|
|
* Secondary: on the following casts
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== is related to: S1905
|
|
|
|
=== on 8 Jul 2015, 15:28:40 Ann Campbell wrote:
|
|
\[~tamas.vajk] note that I'm a little concerned the title might be too broad. What do you think?
|
|
|
|
=== on 9 Jul 2015, 12:18:38 Tamas Vajk wrote:
|
|
\[~ann.campbell.2] I think the title is okay. Maybe we could add "useless duplicate casts..."
|
|
|
|
|
|
I found this: \https://msdn.microsoft.com/en-us/library/ms182271.aspx, which also uses the phrase "duplicate casts", so there is no need to modify it.
|
|
|
|
=== on 9 Jul 2015, 12:35:34 Ann Campbell wrote:
|
|
\[~tamas.vajk] I vote against adding "useless" to the title since that, in itself, would be redundant. :-)
|
|
|
|
endif::env-github,rspecator-view[]
|