Question: In my C# mode, M-b and M-f are bound to {backward,forward}-word. 

But these things stop at underscores, which I use sometimes as a prefix on member variables. 

How do I get emacs to treat the underscore as a word character?

Answer: 
As huaiyuan mentioned, you ned to modify your syntax table.
That said, what he posted modifies the current table...

Each language has a syntax table, e.g. For c++, you could do

`(modify-syntax-entry ?_ "w" c++-mode-syntax-table)`

I don't know what "your c# mode" uses, but a quick `M-x apropos` with a look up of `syntax-table` should help you find out...
You don't necessarily have to modify your syntax table. `_` belongs to the syntax class symbol in csharp-mode, so you may use **`forward-symbol`** instead of `forward-word`. `forward-symbol` is in `thingatpt`, which comes with emacs (at least 23).

You can btw quickly look at the syntax table of a mode with `C-h s` (describe-syntax).