TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# this Keyword

Use the this-keyword in an example program. The keyword is part of an instance expression.
This. Here we eliminate naming conflicts. This keyword indicates the current instance. Two variables sometimes have the same identifier.
A special keyword (this) eliminates mistakes—it indicates the class member with the identifier. It can also be part of an indexer on a class (this is a separate thing).This: IndexerThis: ConstructorThis: Extension
An example. This program uses the "this" keyword when referring to a class instance. We use the "this" keyword inside the class declaration only and to refer to that instance.

Static: This can not refer to a static field or method. It cannot occur inside a static class.

Tip: The "this" keyword is inferred by the compiler and not required. It is useful for expressing your intent.

Part 1: B is an instance method. The method B can be called as "this.B()" only if you are inside the class.

Part 2: The program accesses a field with "this". The statements "_a++" and "this._a++" are equivalent in this program.

C# program that uses this instance expression using System; class Perl { public Perl() { // Part 1: call instance method with "this." this.B(); } int _a; // Instance field public void B() { // Part 2: increment instance field without "this." _a++; // ... Use this. this._a++; // ... Read instance field. Console.WriteLine("B called: " + this._a); } } class Program { static void Main() { // Create a new instance of the type Perl. // ... The constructor calls method B. // ... Then we call method B again. Perl perl = new Perl(); perl.B(); } } Output B called: 2 B called: 4
Example 2. We can pass the "this" instance to another method. That method will then receive the reference to the class we called it from.

Tip: This approach can be useful in some contexts where you have a chain of method calls and constructors.

C# program that uses this as argument using System; class Net { public string Name { get; set; } public Net(Perl perl) { // Use name from Perl instance. this.Name = perl.Name; } } class Perl { public string Name { get; set; } public Perl(string name) { this.Name = name; // Pass this instance as a parameter! Net net = new Net(this); // The Net instance now has the same name. Console.WriteLine(net.Name); } } class Program { static void Main() { Perl perl = new Perl("Sam"); } } Output Sam
Disambiguate. Use "this" to disambiguate a variable, for when you have a conflict in a parameter or local variable name and a field name. This sometimes prevents a compile-time error.

Terms: The term "precisely equivalent" means exactly equal. The term "disambiguate" means to make the difference clear.

Standard. Each member type describes its behavior with the "this" keyword as an instance expression. None of the member types allow you to use "this" when dealing with a static declaration.

Note: The standard refers to the "this" keyword as the instance expression. The keyword is an important part of the language.

Expressions: The standard goes to great detail about the nature of expressions in a 150-page chapter.

Constructor initializer. You can use "this" in a constructor initializer to implement constructor overloading and code sharing. It makes classes simpler.Class
Indexer. Also, you can use "this" to declare an indexer. An indexer can be accessed with the same syntax as an array type. We can have expression-bodied indexers.
Extension methods. Extension method syntax uses the "this" keyword in a different context. We use "this" to specify the instance variable in the parameter list of the extension method.
A summary. We provided details from the C# standard itself. The instance expression is optional in many cases. It indicates which identifier is being referenced.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf