3
It means nothing. You don't have to use it. It used to be a naming standard but not anymore.
1
A lot of C# programmers like to precede field names with an underscore and a lower case letter to distinguish them from an associated property which begins with an upper case letter. For example:
private string _name;
public string Name
{
get { return _name;}
set { _name = value; }
}
This is just a convention and you don't have to follow it if you're allergic to underscores.
One thing you shouldn't do is to precede your identifiers with a double underscore as this is reserved for use by the system. For example __arglist is an undocumented C# keyword which is used for calling C functions which take a variable number of arguments.