Difference between revisions of "Cast"

From D Wiki
Jump to: navigation, search
Line 7: Line 7:
 
Casting will result in a null reference when the cast cannot be made. (There is no ''instanceof'' operator, because it is not needed.)
 
Casting will result in a null reference when the cast cannot be made. (There is no ''instanceof'' operator, because it is not needed.)
  
<syntaxhighlight lang="D">MyType castedValue = cast(MyType) someValue;
+
<syntaxhighlight lang="D">
 +
MyType castedValue = cast(MyType) someValue;
  
 
if (castedValue !is null)
 
if (castedValue !is null)
Line 13: Line 14:
 
     /* use the casted value */
 
     /* use the casted value */
 
}</syntaxhighlight>
 
}</syntaxhighlight>
 +
 +
For added safety, the following pattern can be used. This is safer because the casted value may only be used if it holds a valid MyType, where the pattern above would let you use castedValue even if it is null.
 +
 +
<syntaxhighlight lang="D">
 +
if (MyType castedValue = cast(MyType) someValue)
 +
{
 +
  /* use the casted value */
 +
}
 +
</syntaxhighlight>

Revision as of 22:31, 15 February 2013

Casting class types

Casting to a class type T from a value can be achieved with the following:

cast(T) value

Casting will result in a null reference when the cast cannot be made. (There is no instanceof operator, because it is not needed.)

MyType castedValue = cast(MyType) someValue;

if (castedValue !is null)
{
    /* use the casted value */
}

For added safety, the following pattern can be used. This is safer because the casted value may only be used if it holds a valid MyType, where the pattern above would let you use castedValue even if it is null.

if (MyType castedValue = cast(MyType) someValue)
{
   /* use the casted value */
}