Skip to content

Files

Latest commit

 

History

History
51 lines (37 loc) · 996 Bytes

File metadata and controls

51 lines (37 loc) · 996 Bytes

Pattern: Use of as

Issue: -

Description

If you know the type is correct, use an assertion or assign to a more narrowly-typed variable (this avoids the type check in release mode; as is not compiled out in release mode). If you don't know whether the type is correct, check using is (this avoids the exception that as raises).

Example of incorrect code:

(pm as Person).firstName = 'Seth';

Example of correct code:

Person person = pm;
person.firstName = 'Seth';

or

Example of correct code:

if (pm is Person)
 pm.firstName = 'Seth';

but certainly not

Example of incorrect code:

try {
  (pm as Person).firstName = 'Seth';
} on CastError { }

Note that an exception is made in the case of dynamic since the cast has no performance impact.

OK:

HasScrollDirection scrollable = renderObject as dynamic;

Further Reading