IS keyword and AS keyword in x++ Programming Language

Rumman Ansari   Software Engineer   2023-10-17   396 Share
☰ Table of Contents

Table of Content:


IS keyword and AS keyword in x++ Programming Language

In X++ programming, the is and as keywords are used for type checking and casting, respectively.

is keyword:

  • The is keyword is used for type checking, allowing you to determine whether an object is an instance of a specific class or interface.
  • It returns a Boolean value, indicating whether the object on the left side of the is keyword is an instance of the type specified on the right side.
  • If the object is an instance of the specified type, the is keyword returns true; otherwise, it returns false.

Example:


if (myObject is MyClass)
{
    info("myObject is an instance of MyClass.");
}

as keyword:

  • The as keyword is used for type casting, allowing you to convert or cast an object to a specific class or interface type.
  • It attempts to perform the cast, and if successful, it returns the object as the specified type; otherwise, it returns null if the cast fails.
  • It's typically used when you need to work with an object as a specific type, provided that the object is an instance of that type.

Example:


MyClass myInstance = myObject as MyClass;
if (myInstance)
{
    info("Casting to MyClass was successful.");
}

These keywords are essential for working with inheritance and object-oriented programming in X++. The is keyword helps you verify an object's type before performing certain operations, and the as keyword enables you to work with objects as specific types, ensuring that they have the necessary methods and attributes.

Example

Animal Class:


class Animal
{
   // Declare class variables
   str name;
   int age;
   
   // Constructor method
   public void new(str _name, int _age)
   {
       name = _name;
       age = _age;
   }
   
   // Method to make the animal sound
   public void makeSound()
   {
       info("The animal makes a sound.");
   }
}


Cat Class:


class Cat extends Animal
{
   // Additional class variable for Cat
   str color;
 
   // Constructor method for Cat
   public void new(str _name, int _age, str _color)
   {
       super(_name, _age); // Call the base class constructor
       color = _color;
   }
 
   // Override the makeSound method for Cats
   public void makeSound()
   {
       info(strFmt("The cat named %1 makes a meow sound.", name));
   }
 
   // New method specific to Cats
   public void purr()
   {
       info("The cat purrs softly.");
   }
}

AccessClass:


internal final class AccessClass
{
   public static void main(Args _args)
   {
       setPrefix("Result");
       // Create instances of Animal and Cat
       Animal myAnimal = new Animal("Lion",3);
       Cat myCat = new Cat("Whiskers",4, "Gray");
 
       // Using the 'is' keyword to check the type
       if (myAnimal is Animal)
       {
           info("myAnimal is of type Animal.");
       }
 
       if (myCat is Animal)
       {
           info("myCat is of type Animal.");
       }
 
       if (myCat is Cat)
       {
           info("myCat is of type Cat.");
       }
 
       // Using the 'as' keyword for casting
       Cat castedCat = myAnimal as Cat;
 
       if (castedCat)
       {
           info("Casting to Cat was successful.");
       }
       else
       {
           info("Casting to Cat failed.");
       }
   }
 
}