I am working on a C# .NET Application, where I have a Form with lots of controls. I need to perform computations depending on the values of the controls. Therefore, I need to pass the Form values to a function and inside that function, several helper functions will be called depending on the Control element.

Now, I can think of two ways to pass all the Form values:

i) Save everything in a Dictionary and pass the Dictionary to the function
or
ii) Have a class with attributes that corresponds to each of the Form element.

Which of these two approaches , or any other, is better?

Joel Spolsky (yeah, that Joel) argued a while back that real tough programmers know how to use harder languages (like C, C++ and Lisp) and their constructs (like pointers and functional features), and that higher-level languages were usually not 'hard' enough to demonstrate your competency.

I can understand his point that people knowing C and C++ and that are actually good at it know a lot more about what goes on under the hood than people who, say, program in Ruby (and only in Ruby). I'd say it goes like this: if you know a "hard" language, it's probably a good proof that you're able to program while respecting severe constraints or that you master complex ways of thinking. If you're good at a high level language, you might as well be able to program while respecting severe constraints, but there's no proof of it.

I don't think learning C or C++ will damage your brain (some people seem to believe this though). Actually, learning it just to appreciate better higher-level languages might be a good idea.
