I'm still shakey on how the parameters work, as well as the return types.
As Avelle said, a parameter is just the kind of thing that you want passed to your function, and what it'll be called in the function definition. So a function definition like:
<BR>static void Function(int reps, string thing) <BR>{ <BR> int i = 0; <BR> <BR> while (i < reps) <BR> { <BR> Console.WriteLine("{0}", thing); <BR> } <BR> <BR> Console.WriteLine("The string {0} was printed {1} times.", thing, reps); <BR> i++;<BR>}<BR>
takes two arguments (a parameter is the type of thing passed to the function, an argument is the thing that is actually passed). The first has to be of type int, and will be called "reps" in the rest of the function definition. The second must be of type string and will be referred to as "thing" in the rest of the definition.
In the program, you would call the function like this:
<BR><BR>// Other code <BR><BR>int number = 12; <BR>string text = "whatever"; <BR><BR>Function(number, text); <BR>
So when you call the function as above, the arguments passed fit the parameters in the method signature (the function, return type, modifiers, and parameters, but not the definition) and the function executes, using the number "number" (hard coded to 12, in this case) everywhere "reps" appears in the function definition and the string stored in "text" everywhere "thing" is in the definition.
That's about it for basic parameters, they define what arguments the function can accept, and provide a generic name to list for those arguments when defining the function.
A return type is sort of what the function actually produces. "Void" as a return type means that the function doesn't return anything, all that happens is whatever's in the function code. With a return type other than void, the function does whatever it does and then presents the result to whatever called that function in the first place. The return type has to match the type of the value returned, although C# can do some type casting behind the scenes for you in some situations. So if you want to have
<BR>int theNumber = CalculateNumber(); <BR>
then the return type of the CalculateNumber function will have to be an int, because that is what theNumber's type is. You can get away with having it be something like a float, because C# is good at implicit type casting compared with some other languages, but it's a better practice to define things as you need them to be and do any type casting explicitly in your code.
C# can't automatically convert from string to int for you though. When you use the int.parse() function, the program converts the argument from a string to an int. You never change the contents of the fTemp or cTemp variables from the string passed as the argument (they're passed to the functions as strings), so if you return them your return type will have to be a string as well or else you'll get an error, as you saw. You could return your farenheit and celsius variables (rather than fTemp or cTemp) if you want to return an int, because they are the string arguments parsed to integer values.
In this particular case, I don't think that you need a return value for these functions (return type void should be fine), because you don't use a value stored in "temp" after the function call anyways. The function itself does the conversion and prints the result to the screen, and then that's it-- so there's no reason to re-assign the value of "temp" after the conversion.
I hope that that helps clear things up a bit for you. The general syntax stuff can be confusing at first, but once you've got it down things will be a lot clearer.