InvalidCastException ஐ எவ்வாறு சரிசெய்வது?

 

System.InvalidCastException நிரலாக்கப் பிழையால் ஏற்படுகிறது, மேலும் இதை try/catch தொகுதியில் கையாளக்கூடாது.அதற்கு பதிலாக, விதிவிலக்கின் காரணம் அகற்றப்பட வேண்டும்.

"is" ஆபரேட்டர்

ஒரு ஆபரேட்டர் செயல்பாட்டைச் செய்வதற்கு முன்பு பொருந்தக்கூடிய தன்மையைச் சோதிக்க "இது" ஆபரேட்டரை C# வழங்குகிறது.ஒரு வெளிப்பாடு முடிவின் இயக்க நேர வகை கொடுக்கப்பட்ட வகையுடன் பொருந்துமா என்பதை இது சரிபார்க்கும்.

கொடுக்கப்பட்ட பொருள் ஒரே வகையாக இருந்தால், "இஸ் ஆபரேட்டர்" உண்மை(true)க்குத் திரும்பும், இல்லையெனில், பொய்(false)யைத் திருப்பும்.இது பூஜ்ய(null) பொருள்களுக்கும் பொய்(false)யைத் தருகிறது.

இது சுருக்கமான வகை மதிப்பீடு மற்றும் மாற்றத்தை செயல்படுத்தும் "is" அறிக்கையின் நேரடியான நீட்டிப்பு.

Syntax

expr is type

expr என்பது ஒரு மதிப்பைத் தரும் ஒரு வெளிப்பாடு மற்றும் type என்பது ஒரு வகை அல்லது வகை அளவுருவின் பெயர். வாதம் expr ஒரு பெயர் அறியப்படாத முறை அல்லது ஒரு லாம்ப்டா வெளிப்பாடாக இருக்க முடியாது.

உதாரணம்

class Program
{
      static void Main(string[] args)
      {
            int j = 100;
            object obj = j;
            Console.WriteLine(obj is int);  // output: True
            Console.WriteLine(obj is long);  // output: False
      }    
}

ToString () முறை

class Program
{
    static void Main(string[] args)
    {
        object obj = 100;
        try
        {
            string strg = (string)obj;
        }
        catch (InvalidCastException ex)
        {
            Console.WriteLine(ex);
        }
    }
}

மேலே உள்ள எடுத்துக்காட்டில், ஒரு வார்ப்பு ஆபரேட்டரைப் பயன்படுத்தி ஒரு மதிப்பை அல்லது ஒரு பொருளை அதன் string பிரதிநிதித்துவத்திற்கு மாற்ற முயற்சிக்கிறீர்கள்.நீங்கள் நிரலை இயக்கும்போது "System.InvalidCastException: 'System.String' என தட்டச்சு செய்ய 'System.Int32' வகையின் பொருளை அனுப்ப முடியவில்லை."

ToString () முறை பொருள்(Object) வகுப்பால் வரையறுக்கப்படுகிறது, எனவே நிர்வகிக்கப்படும் அனைத்து வகைகளாலும் inherited அல்லது overriddenனாகிறது.எனவே, இங்கே நாம் அதன் ToString முறையை அழைக்கிறோம்.ஏனென்றால் இது எந்த வகையிலும் ஒரு நிகழ்வை அதன் string பிரதிநிதித்துவத்திற்கு வெற்றிகரமாக மாற்றுகிறது.

class Program
{
      static void Main(string[] args)
      {
            object obj = 100;
            string strg = obj.ToString();
            Console.WriteLine(strg);
            Console.ReadKey();
      }
}
Post a Comment (0)
Previous Post Next Post