namespace AppC001 { publicclassStatistics { // 使用 params 关键字定义可变参数方法 publicdoubleCalculateAverage(params double[] numbers) { double sum = 0; foreach (double number in numbers) { sum += number; } return numbers.Length > 0 ? sum / numbers.Length : 0; } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Statistics stats = new Statistics(); double average = stats.CalculateAverage(1.0, 2.5, 3.8, 4.2); Console.WriteLine($"Average: {average}"); // 输出: Average: 2.875 } } }
5. 引用参数(ref)和输出参数(out)
通过 ref 和 out 关键字,可以使方法内部对参数的修改反映到方法外部。
ref 参数:需要在调用前初始化。
out 参数:不需要在调用前初始化,但必须在方法内部赋值。
示例(ref 参数):
namespace AppC001 { publicclassSwapper { // 使用 ref 交换两个整数的值 publicvoidSwap(ref int a, ref int b) { int temp = a; a = b; b = temp; } } publicclassProgram { publicstaticvoidMain() { // 调用方法 int x = 5; int y = 10; Swapper swapper = new Swapper(); swapper.Swap(ref x, ref y); Console.WriteLine($"After Swap: x = {x}, y = {y}"); // 输出: x = 10, y = 5 } } }
示例(out 参数):
namespace AppC001 { publicclassParser { // 尝试将字符串解析为整数 publicboolTryParseInteger(string input, out int result) { returnint.TryParse(input, out result); } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Parser parser = new Parser(); if (parser.TryParseInteger("123", out int number)) { Console.WriteLine($"Parsed number: {number}"); // 输出: Parsed number: 123 } else { Console.WriteLine("Failed to parse number."); } } } }
方法的返回值
方法可以返回值,用于将结果传递回调用者。
1. 返回值类型一致性
方法的返回值类型必须与定义时声明的类型一致。
示例:
namespace AppC001 { publicclassMultiplier { // 返回整数类型的乘积 publicintMultiply(int a, int b) { return a * b; } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Multiplier multiplier = new Multiplier(); int product = multiplier.Multiply(4, 5); Console.WriteLine($"Product: {product}"); // 输出: Product: 20 } } }
2. void 类型方法
如果方法不需要返回任何值,则使用 void 类型。
示例:
namespace AppC001 { publicclassLogger { // 无返回值的方法 publicvoidLogMessage(string message) { Console.WriteLine($"Log: {message}"); } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Logger logger = new Logger(); logger.LogMessage("This is a log message."); // 输出: Log: This is a log message. } } }
3. 多返回值
通过元组(Tuple)或输出参数(out),方法可以返回多个值。
示例(使用 Tuple 返回多个值):
namespace AppC001 { publicclassDivider { // 返回商和余数 public (int Quotient, int Remainder) Divide(int dividend, int divisor) { if (divisor == 0) { thrownew DivideByZeroException("除数不能为0"); } int quotient = dividend / divisor; int remainder = dividend % divisor; return (quotient, remainder); } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Divider divider = new Divider(); var result = divider.Divide(17, 4); Console.WriteLine($"Quotient: {result.Quotient}, Remainder: {result.Remainder}"); // 输出: Quotient: 4, Remainder: 1 } } }
示例(使用 out 参数返回多个值):
namespace AppC001 { publicclassAnalyzer { // 分析字符串,返回长度和首字符 publicvoidAnalyzeString(string input, out int length, out char firstChar) { length = input.Length; firstChar = input[0]; } } publicclassProgram { publicstaticvoidMain() { // 调用方法 Analyzer analyzer = new Analyzer(); analyzer.AnalyzeString("Hello", out int len, out char first); Console.WriteLine($"Length: {len}, First Character: {first}"); } } }