This is just a pointer to your class. Through it you can see a listing of the properties and methods available in it.
For the above case, you can write the second example without using this. Although you can use it, it is not required in your code.
If you want to know more about this pointer, please see this link: Pointer this
Regarding the use of properties with underscore, it is usually used when we create a property like the following example:
private string _nome;
public string Nome
{
get { return _nome; }
set { _nome = value; }
}
In this example you create a public access and a private access property where you do not want to expose your access. By default, private property is written with the underscore.
This property type is called full property and is usually used when you want to execute some code in the get and set actions.
If you want to know more about property types, see the link below.
Property Types in C #