Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

De C# this Keyword Onder de Loep

De C# this Keyword Onder de Loep

Verken de veelzijdige C# this keyword door beknopte uitleg en real-world code samples.

In C# verwijst this naar de huidige instantie van een klasse. Het is onmisbaar voor het onderscheiden tussen instantieleden en methodeparameters, het aanroepen van overbelaste constructors, het doorgeven van het huidige object aan andere methodes en het declareren van indexers.

using System;
namespace ThisKeyword {
    class Test {
        int num;
        Test(int num) {
            // this.num refereert naar het instantieveld
            this.num = num;
            Console.WriteLine("object van this: " + this);
        }
        static void Main(string[] args) {
            Test t1 = new Test(4);
            Console.WriteLine("object van t1: " + t1);
            Console.ReadLine();
        }
    }
}

Output

object van this: ThisKeyword.Test
object van t1: ThisKeyword.Test

Zowel t1 als this refereren naar dezelfde instantie; dus hun string representaties matchen.


Variabelen met Dezelfde Naam Ontwarren

Instantievelden en parameters kunnen een naam delen, maar zonder this behandelt de compiler de referentie als de parameter, waardoor het veld ongewijzigd blijft.

using System;
namespace ThisKeyword {
    class Test {
        int num;
        Test(int num) {
            num = num; // wijst parameter aan zichzelf toe, veld blijft default (0)
        }
        static void Main(string[] args) {
            Test t1 = new Test(4);
            Console.WriteLine("waarde van num: " + t1.num);
            Console.ReadLine();
        }
    }
}

Output

0

De output is nul omdat de toewijzing het veld niet beïnvloedt. this lost de ambiguïteit op:

using System;
namespace ThisKeyword {
    class Test {
        int num;
        Test(int num) {
            // this.num refereert naar het instantieveld
            this.num = num;
        }
        static void Main(string[] args) {
            Test t1 = new Test(4);
            Console.WriteLine("waarde van num: " + t1.num);
            Console.ReadLine();
        }
    }
}

Output

waarde van num: 4

Constructor Chaining met this

Wanneer een klasse meerdere constructors aanbiedt, kan er een een andere aanroepen om initialisatielogica te centraliseren. Dit wordt bereikt met het this trefwoord na een dubbele punt in de constructorhandtekening.

using System;
namespace ThisKeyword {
    class Test {
        Test(int num1, int num2) {
            Console.WriteLine("Constructor met twee parameters");
        }
        // roept de twee-parameter constructor aan
        Test(int num) : this(33, 22) {
            Console.WriteLine("Constructor met één parameter");
        }
        public static void Main(string[] args) {
            Test t1 = new Test(11);
            Console.ReadLine();
        }
    }
}

Output

Constructor met twee parameters
Constructor met één parameter

De één-parameter constructor voert eerst de twee-parameter constructor uit, daarna gaat hij door met zijn eigen body. Dit patroon, constructor chaining genoemd, houdt initialisatielogica DRY.


Huidige Instantie Doorgeven aan Methodes

Soms heeft een methode nodig om te opereren op het object dat het aanroepte. this als argument gebruiken maakt de intentie expliciet.

using System;
namespace ThisKeyword {
    class Test {
        int num1;
        int num2;
        Test() {
            num1 = 22;
            num2 = 33;
        }
        // methode die een Test instantie accepteert
        void PassParameter(Test t) {
            Console.WriteLine("num1: " + t.num1);
            Console.WriteLine("num2: " + t.num2);
        }
        void Display() {
            // geef de huidige instantie door
            PassParameter(this);
        }
        public static void Main(string[] args) {
            Test t1 = new Test();
            t1.Display();
            Console.ReadLine();
        }
    }
}

Output

num1: 22
num2: 33

Omdat this de aanroepende instantie vertegenwoordigt, kan de methode veilig toegang krijgen tot de private velden.


Een Indexer Declareren met this

Indexers stellen objecten in staat om geïndexeerd te worden als arrays. Het this trefwoord declareert de indexer handtekening.

using System;
namespace ThisKeyword {
    class Student {
        private string[] names = new string[3];
        // Indexer declaratie
        public string this[int index] {
            get {
                return names[index];
            }
            set {
                names[index] = value;
            }
        }
    }
    class Program {
        public static void Main() {
            Student s = new Student();
            s[0] = "Ram";
            s[1] = "Shyam";
            s[2] = "Gopal";
            for (int i = 0; i < 3; i++) {
                Console.WriteLine(s[i]);
            }
        }
    }
}

Output

Ram
Shyam
Gopal

De private names array wordt benaderd via de indexer, wat encapsulatie intact houdt terwijl array-achtige syntaxis wordt aangeboden.

Voor een diepere duik in indexers, raadpleeg Microsoft's officiële documentatie: C# Indexer.

C Taal

  1. De DS18B20 Temperatuursensor Testen op Raspberry Pi
  2. Vliegende naaldtest (FPT): Professionele gids voor betrouwbare PCB-functionaliteitsverificatie
  3. Turck TB3-CP80: Precisie Sensor Testbox voor Inductieve, Magnetische, Capacitieve en Fotoelektrische Sensoren
  4. Pomona MP1 Magnetische Meetpen – 4mm Veiligheidsbus, Rechthoekig voor Precieze Industriële Diagnostiek
  5. Snelle smartphone-gebaseerde COVID-19 test levert 10-minuten, hoge-nauwkeurigheid resultaten
  6. Rigorese Softwaretesten bij RTI: Betrouwbaarheid Garanderen in Connext DDS
  7. C# Static Keyword: Static Variabelen, Methodes en Classes Beheersen
  8. Coded UI Test Automatiseringsframework: Een Uitgebreide Beginner's Gids
  9. Python's Global Keyword onder de knie krijgen: Hoe en wanneer te gebruiken
  10. Java this-sleutelwoord uitgelegd: praktische toepassingen, constructors en meer
  11. Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen