Check out the following. It's Microsoft's take on the question.
http://msdn.microsoft.com/en-us/library/czefa0ke(VS.71).aspx
Just talking about the very basics for c#: Private class fields are prefaced with an underscore. Public class members are capitalized. Method parameters are lower case. For example:
public class Person {
private String _personName;
public String PersonName {
get { return _personName; }
set { _personName = value; }
}
public String SayHello(String toName ) {
return String.Format("Hi {0}, I am {1}", toName, PersonName);
}
}
Note that in order to be CLS compliant, you should not depend on casing to differentiate between variables. Also, it's considered bad practice to preface parameters or other variables with the type OR with some form of hungarian notation (which nobody gets right anyway. Read this).
The only reason private fields are prefaced with an underscore is to differentiate them from method parameters.
One practice I run into a lot is the use of the "this." notation. Besides being annoying, it's completely unnecessary when things are named correctly.