Thursday, July 8, 2021

ENUMS சி ஷார்ப்

 



இனம்ஸ் ஏன் பயன்படுத்த வேண்டும்?

சிஷார்ப்பில் இனம்ஸ் என்பது ஸ்ட்ராங்க்லி டைப்டு கான்ஸ்டன்ஸ் ஆகும்.

இப்பொழுது நம்மிடம் customer என்றொரு கிளாஸ் உள்ளது. அதில் name, gender என்று இரு பிராப்பர்ட்டிகள் உள்ளன.

இதில் gender ஒரு இன்டிஜெர் ஆகும். இதன் மதிப்பு முறையே

0-Unknown,

1-Male

2-female

கீழே ஒரு சான்று நிரல் உள்ளது.

using System;
public class Enums
{
    public static void Main()
    {
        Customer[] customers = new Customer[3];
        customers[0] = new Customer()
        {
            Name = "Mark",
            Gender = 1
        };
        customers[1] = new Customer()
        {
            Name = "Mary",
            Gender = 2
        };
        customers[2] = new Customer()
        {
            Name = "Sam",
            Gender = 0
        };
        foreach (Customer customer in customers)
        {
            Console.WriteLine("Name = {0} && Gender = {1}", customer.Name, GetGender(customer.Gender));
        }
    }


    public static string GetGender(int gender)
    {
        // The swicth here is less readable because of these integral numbers
        switch (gender)
        {
            case 0:
                return "Unknown";
            case 1:
                return "Male";
            case 2:
                return "Female";
            default:
                return "Invalid Data for Gender";
        }
    }
}


// 0 - Unknown
// 1 - Male
// 2 - Female


public class Customer
{
    public string Name { get; set; }
    public int Gender { get; set; }
}

 

,மேலே உள்ள நிரலில் Customer என்றொரு கிளாஸ் உள்ளது..இந்த கிளாஸின் ஆப்ஜெக்டுகள் அர்ரேயாக அறிவிக்கப்பட்டு தொடக்க மதிப்பிருத்தப் பட்டுள்ளன,.

 

இதில் GetGender என்றொரு மெத்தட் உள்ளது. இதற்கு gender -ன் இன்டிஜெர் மதிப்பை அனுப்பினால் அதன் gender ஸ்ட்ரிங்க் மதிப்பை ரிடர்ன் செய்யும்.

மேலே உள்ள நிரல் வரிகள் வாசிக்க்அ தகுந்ததாக இல்லை. மேலும் நிர்வாகிக்கவும் எளிது அல்ல.

இப்பொழுது கீழே உள்ள சான்று நிரலை கவனிக்கவும்.

using System;
public class Enums
{
    public static void Main()
    {
        Customer[] customers = new Customer[3];
        customers[0] = new Customer()
        {
            Name = "Mark",
            Gender = Gender.Male
        };
        customers[1] = new Customer()
        {
            Name = "Mary",
            Gender = Gender.Female
        };
        customers[2] = new Customer()
        {
            Name = "Sam",
            Gender = Gender.Unknown
        };
        foreach (Customer customer in customers)
        {
            Console.WriteLine("Name = {0} && Gender = {1}", customer.Name, GetGender(customer.Gender));
        }
    }


    public static string GetGender(Gender gender)
    {
        // The swicth here is now more readable and maintainable because 
        // of replacing the integral numbers with Gender enum
        switch (gender)
        {
            case Gender.Unknown:
                return "Unknown";
            case Gender.Male:
                return "Male";
            case Gender.Female:
                return "Female";
            default:
                return "Invalid Data for Gender";
        }
    }
}


public enum Gender
{
    Unknown = 0,
    Male = 1,
    Female = 2
}


public class Customer
{
    public string Name { get; set; }
    public Gender Gender { get; set; }
}

மேலே உள்ள நிரலில் enum அறிமுகப்படுத்தப் பட்டுள்ளது. இதில் மூன்று மெம்பர்கள் உள்ளன. ஒவ்வொன்றின் இன்டிஜெர் மதிப்பும் முறையே கொடுக்கப்பட்டுள்ளது. இப்பொழுது GetGender மெத்தடில் நாம் இப்பொழுது எழுதியுள்ள நிரலை கவனிக்கவும். முன்பு எழுதியதற்கும் இப்பொழுது எழுதியதற்கும் உள்ள வேறுபாட்டை கவனிக்கவும்.

இப்பொழுது நிரல் வரிகள் வாசிக்க தகுந்ததாகவும் நிர்வாகிக்க எளிதாகவும் உள்ளது.

மேலும் Enum பற்றிய குறிப்புகள்.

1. இனம்ஸ் எனப்படுவது எனுமுரேசன் ஆகும்.

2. இது ஸட்ராங்க்லி டைப்டு கான்ஸ்டன்ஸ் ஆகும். இனம் டைப்பிலிருந்து இன்டிஜெர் ஆகவோ அல்லது இண்டிஜெர் டைப்பிலிருந்து இனம் ஆகவோ மாற்ற் எக்ஸ்ப்ளிசிட் ஆக குறிப்பிட்டு டைப்காஸ்ட் செய்ய வேண்டும்.

அது போல் ஒரு இனம் டைப்பின் இன்டிஜெர் மதிப்பை மற்றொரு இனம் டைப்பிற்கு மதிப்பிருத்த முடியாது.

ஒரு இனம்மின் டிஃபால்ட் டைப் இன்டிஜெர் ஆகும்.

இதில் முதல் எளிமெண்டின் மதிப்பு 0 ஆகும். அதற்கடுத்த ,மதிப்புகள் டிஃபால்ட் ஆக ஒவ்வொன்றாய் அதிகரிக்கும்.

இதன் மதிப்புகளை நா,ம் விரும்பினால் மாற்றியமைக்கலாம்.

இனம்கள் வேல்யூ டைப் ஆகும்.

Enum என்ற கீவேர்டு இதை அறிவிக்க உதவுகின்றது. இது இதன் கீ மெம்பர்களையும் அதன் மதிப்பையும் அறிய  Getvalues, GetNames என்ற ஸ்டேட்டிக் மெத்தட்கள் பயன்படுகின்றன.

-நன்றி

முத்து கார்த்திகேயன்,மதுரை.

 

 

 

 

 

 

ads Udanz

No comments:

Post a Comment