Linq – The focused generalist

ஹாய் தோழர்களே,

இது ஒரு புதிய தொடர், எனது திறன்களை சிறப்பாக பராமரிக்க முயற்சிப்பேன். நான் இந்த அற்புதமான பதிவர், அவர் மைக்ரோசாஃப்ட் MVP என்று அழைக்கப்படுகிறார் ஐரிஸ் கிளாசன். நிரலாக்கத்தின் முதல் வருடத்திற்குப் பிறகு, அவள் “முட்டாள் கேள்வி” என்று அழைப்பதற்கான பதில்களைக் கேட்க ஆரம்பித்தாள். அவள் ஏன் அவர்களை முட்டாள்களாக கருதுகிறாள்? உண்மையில் அவர்கள் இல்லை. எந்தவொரு டெவலப்பரும், ஒரு ஜூனியர் அல்லது கட்டிடக் கலைஞராக (நீங்கள் ஒரு கட்டிடக் கலைஞராக இருந்தால், அதற்கான வாய்ப்புகள் குறைவு), கேட்கவும் பதில்களைப் பெறவும் அவை அடிப்படையில் நல்ல கேள்விகள். அவரது தொடர் மிகவும் நன்றாக உள்ளது, மேலும் நான் சொந்தமாக தொடங்க வேண்டும் என்று நினைத்தேன். எனது வலைப்பதிவிற்கு இதுபோன்ற ஒன்றைச் செய்ய வேண்டிய அவசியத்தை நான் ஏன் உணர்கிறேன் என்ற கேள்வியை இது எழுப்புகிறது. நாம் அனைவரும் நமது நிபுணத்துவத் துறையில் சிறந்து விளங்க விரும்புகிறோம். சாப்ட்வேர் இன்ஜினியரிங் மிகவும் பரந்ததாக இருப்பதால், அது சில நேரங்களில் “பிட்” குழப்பத்தை ஏற்படுத்தலாம். எனது தொழில்நுட்பக் கேள்விகள் என்னை மேம்படுத்தி, .NET கட்டமைப்பைப் பற்றிய சிறந்த புரிதல் மட்டுமின்றி, தற்போது எனக்கு ஆர்வமூட்டக்கூடிய அல்லது அருகில்/தொலைதூர எதிர்காலத்தில் எனக்கு ஆர்வமூட்டக்கூடிய எந்த வகையான தொழில்நுட்பமும் எனக்கு வழிவகுக்கும் என்று நம்புகிறேன். அந்த கேள்விகள் வலைப்பதிவின் வாசகர்களுக்கும் பின்தொடர்பவர்களுக்கும் உதவியாக இருக்கும் என்று நம்புகிறேன்.

தொடரைத் தொடங்க, நான் கடந்த காலத்தில் இருந்த கேள்விகளுடன் தொடங்குகிறேன். ஏன் ? தொடர்ந்து தொழில்நுட்பக் கேள்விகளுக்கான பதில்களை வழங்கவும், தொடர்ந்து கண்காணிக்கவும் இது எனக்கு உதவும். எனவே LINQ மூலம் கிராக்கிங் செய்யலாம். எங்கள் C# தீர்வுகளில் நாம் ஏன் LINQ ஐப் பயன்படுத்த வேண்டும்? அது ஒரு கேள்வி. “நல்லது” என்று என்னால் பதிலளிக்க முடியாது, ஏனென்றால் அது சிறந்தது. மற்றும் அதை முடிக்க வேண்டும்.

1. LINQ என்றால் என்ன?

LINQ என்பதன் சுருக்கம் எல்கோபம் INஒருங்கிணைக்கப்பட்டது கேuery. SQL தரவுத்தளத்தில் நீங்கள் செய்வது போல் தரவை மீட்டெடுக்க IEnumerable செயலாக்கத்தை வினவ .NET டெவலப்பர்களை இது அனுமதிக்கிறது. எடுத்துக்காட்டாக, ICollection மற்றும் IEnumerable இடைமுகம் இரண்டையும் நீட்டிக்கும் IList இடைமுகத்தைச் செயல்படுத்தும் தரவுக் கட்டமைப்பான int இன் பட்டியல், அதில் உள்ள மதிப்புகளின் சராசரி என்ன என்பதைப் பார்க்க அந்தப் பட்டியலை வினவலாம். LINQ ஐப் பயன்படுத்த, உங்கள் மூலக் கோப்பில் System.Linq கட்டளையைச் சேர்க்கப் போகிறீர்கள் (அல்லது உங்கள் குறியீட்டில் என்ன குறிப்புகள் விடுபட்டுள்ளன என்பதை Resharper உங்களுக்குத் தெரிவிக்க வேண்டும்).

using System;
using System.Linq;
//Our very first linq call ! 🙂
public class LinqSamples
{
    public int AverageInts(List list)
    {
        return list == null || list.Count == 0 ? 0 : list.Average();
    }
}

2. LINQ இன் சில நன்மைகள் என்ன?

சரி பல உள்ளன. நீங்கள் LINQ செல்லும்போது, ​​நீங்கள் திரும்பிச் செல்லமாட்டீர்கள் என்று பந்தயம் கட்டலாம். உங்கள் குறியீட்டில் உள்ள LINQ இன் முதல் நன்மைகளில் ஒன்று, அதை மேலும் அறிவிக்கக்கூடியதாக ஆக்குகிறது. அதாவது இது கிட்டத்தட்ட சாதாரண ஆங்கிலத்தில் (குறியீடு செல்லும் வரை) படிக்கலாம்.

using System;
using System.Linq;
public class LinqSamples
{
    //Worst name for a method I agree haha
    public List OrderStringStartingByA_AndByLength(List list)
    {
         return list.Where(str => str != null)
                    .Where(str => str.Contains("a"))
                    .OrderBy(strElement => strElement.Length);
    }
}

எனவே அடிப்படையில், முறை பட்டியல் மூலம் செல்கிறது முதல் மட்டுமே பூஜ்ய சரங்களை கையாள. பின்னர் அது ‘a’ என்ற எழுத்தில் தொடங்காத பட்டியல் சரங்களிலிருந்து வடிகட்டுகிறது மற்றும் இறுதியாக, சிறியது முதல் பெரிய சரம் வரை சரம் நீளம் மூலம் பட்டியலை ஆர்டர் செய்கிறது.

இது ஒரு ஃபார் அல்லது ஃபோர்ச் லூப்பைப் பயன்படுத்தி எழுதப்பட்ட சிக்கலான தன்மையையும் நீளக் குறியீட்டையும் குறைக்கலாம். ஃபோர்ச் லூப்களை மட்டும் பயன்படுத்தி நான் எழுதியதற்குச் சமமானதை எழுத, அது இப்படித்தான் இருக்கும்:

using System;
using System.Linq;
public class LinqSamples
{
    //Worst name for a method I agree haha
    public List OrderByA_AndLength(List list)
    {
        var orderedList = new Lis();
        foreach(var str in list)
        {
           if(str == null) break;
           if(!str.Contains("a")) break;
           orderedList.Add(str);
        }
        orderedList.Sort();
        return orderedList;
    }
    // See here : 9 lines vs 3 lines in the other example!
}

இங்கே பார்க்கவும், நாம் LINQ டு ஆப்ஜெக்ட் எனப்படும் LINQ வகையை மட்டுமே பயன்படுத்தி வருகிறோம். கட்டிடக்கலை நன்கு சிந்திக்கப்பட்டது; அவ்வாறு செய்வதன் மூலம், LINQ to XML அல்லது LINQ to SQL போன்ற பிற வகை LINQகளை மிக எளிதாக எடுக்கலாம்.

3. ஒரு முறை குழு என்றால் என்ன?

ஒரு சில வார்த்தைகளில், ஒரு முறை குழு என்பது உறுப்பினர் தேடுதலின் விளைவாக ஓவர்லோட் முறைகளின் தொகுப்பாகும். இது நேரடியாக C# 3.0 பிரிவு 7.1 இலிருந்து வருகிறது. EventHandler கையாளுபவர் = MyMethod; பின்னர் “MyMethod” என்பது ஒரு முறை குழுவைக் குறிக்கிறது. ஒரே பெயரில் பல முறைகள் இருக்கலாம், ஆனால் வெவ்வேறு கையொப்பங்கள். முறை குழு மாற்றம் பொருத்தமான உண்மையான முறையை அழைக்கும் பிரதிநிதியை உருவாக்குகிறது. சுருக்கமாக, ஒரு முறை குழு என்பது ஒரு செட் முறையின் பெயர். ஒன்று மட்டும் இருக்கலாம். சரியான மாற்றங்களைப் பயன்படுத்தி, கம்பைலர் செய்யும்

ஒரு முறை குழு என்பது முறைகளின் தொகுப்பின் பெயர் (அது ஒன்று மட்டுமே இருக்கலாம்).
ToString செயல்பாடு பல ஓவர்லோடுகளைக் கொண்டுள்ளது – முறை குழுவானது அந்தச் செயல்பாட்டிற்கான அனைத்து வெவ்வேறு சுமைகளையும் கொண்ட குழுவாக இருக்கும். இது “முறையின் பெயர் என்னவென்று எனக்குத் தெரியும், ஆனால் கையொப்பம் எனக்குத் தெரியாது” என்பதற்கான ஒரு தொகுப்பாளர் சொல்; இயக்க நேரத்தில் அதற்கு இருப்பு இல்லை, அங்கு அது சரியான ஓவர்லோடில் மாற்றப்படுகிறது. மேலும், நீங்கள் LINQ ஐப் பயன்படுத்துகிறீர்கள் என்றால், நீங்கள் வெளிப்படையாக myList.Select(methodGroup) போன்றவற்றைச் செய்யலாம், எனவே நீங்கள் இந்தக் குறியீட்டை மாற்றலாம்:

ஒரு முறை குழு என்பது a க்கு பெயர் முறைகளின் தொகுப்பு (அது ஒன்று மட்டுமே இருக்கலாம்) – அதாவது கோட்பாட்டில் ToStringமுறை பல சுமைகளைக் கொண்டிருக்கலாம் (மேலும் ஏதேனும் நீட்டிப்பு முறைகள்): ToString(), ToString(string format)முதலியன – எனவே ToString தானாகவே ஒரு “முறை குழு”. இது பொதுவாக ஓவர்லோட் தீர்மானத்தைப் பயன்படுத்தி ஒரு முறை குழுவை (தட்டச்சு செய்யப்பட்ட) பிரதிநிதியாக மாற்றலாம் – ஆனால் ஒரு சரத்திற்கு அல்ல; அது அர்த்தம் இல்லை. அடைப்புக்குறிகளைச் சேர்த்தவுடன், மீண்டும்; ஓவர்லோட் தெளிவுத்திறன் தொடங்குகிறது மற்றும் நீங்கள் ஒரு முறை அழைப்பை சந்தேகத்திற்கு இடமின்றி அடையாளம் கண்டுள்ளீர்கள்.

நீங்கள் இதை அனுபவிப்பீர்கள் என்று நம்புகிறேன்!
கெவின்

Leave a Comment