this keyword in C# eliminates naming conflict.It indicates current instance.when two variable sometimes have same identifier, we should use this keyword to remove any confusion.

output screen

Code Explanation :
step 1 : if you debug/run the program then control go to Main method thereafter that goes inside of the Main.
step 2 : Program p = new Program(10,20,30); i created Program class object p with the help of new keyword and Program constructor has three parameters.
step 3 : now control move to Program constructor. public Program(int a,int b,int c) a,b,c receives 10,20,30 respectively.
step 4 : this.a = a, this.b = b, this.c = c; a =10,b=20,c=30. a value move to this.a,b value move to this.b,c value move to this.c
step 5 : this.a=10, this.b=20,this.c=30. now control back to Program constructor.
step 6 : p.display(100,200,300); p object calls display method.
step 7 : public void display(int a,int b,int c). public void display(100,200,300) so ,a=100,b=200,c=300.
step 8 : Console.WriteLine(a + “\t” + b + “\t” + c); Console.WriteLine(100 + “\t” + 200 + “\t” + 300); print 100,200,300.
step 9 : Console.WriteLine(this.a + “\t” + this.b + “\t” + this.c); Console.WriteLine(10 + “\t” + 20 + “\t” + 30); print 10,20,30.
step 10 : now after printing values. control back to display method.
Happy Coding…Thanks.