对口高考C#知识点精讲7.2: 方法详解

方法是什么

方法(Method) 是一个可复用的、命名的代码块。

在这个定义中,描述了方法的三个特点:

  • 方法是一个代码块:花括号包裹的是执行特定任务的一系列语句;
  • 方法是一个命名的代码块:可以使用一个名字表示这个代码块。
  • 方法可复用:将一段常用的功能封装成方法,可以在程序的不同地方多次调用,无需重复编写相同的代码。

比喻

方法就像厨房里的食谱:

  • 方法名:食谱的名字(如"做蛋炒饭")
  • 参数:需要的食材(如"鸡蛋、米饭、盐")
  • 方法体:烹饪步骤
  • 返回值:做好的菜品

方法的由来

方法的主要目的:是为了解决代码复用的问题。假设这里有一段经常需要重复调用的代码:

如果没有方法,它将让代码变得臃肿、维护困难。

namespace LessonMethodBasic
{
    internal class Program
    {
        static void Main(string[] args)//特殊方法:入口方法
        {
            Console.WriteLine("第1步");
            Console.WriteLine("第2步");
            Console.WriteLine("第3步");
            Console.WriteLine("第4步");
            Console.WriteLine("第5步");

           Console.WriteLine("第1步");
            Console.WriteLine("第2步");
            Console.WriteLine("第3步");
            Console.WriteLine("第4步");
            Console.WriteLine("第5步");
        }
    }
}

如果使用方法,

namespace LessonMethodBasic
{
    internal class Program
    {


        public static string DoJob(/*[形式参数]*/){
            Console.WriteLine("第1步");
            Console.WriteLine("第2步");
            Console.WriteLine("第3步");
            Console.WriteLine("第4步");
            Console.WriteLine("第5步");
            return "成功";
        }

        static void Main(string[] args)//特殊方法:入口方法
        {
            //方法调用的语法:方法名([实际参数])

           string s =  DoJob();//返回值是方法调用结束后,返回的那个值。

            Console.WriteLine(s);

        }
    }
}

方法的书写位置:

在定义一个方法前,首先要清楚方法的书写位置: 方法要写在类中。

类有四大成员:字段、属性、方法、构造函数

定义方法的步骤:

  • 第一步:方法体:创建代码块。使用花括号包裹多行代码。由大括号 {} 包围,里面是方法被调用时要执行的一系列语句。
  • 第二步:命名方法。方法的标识符,用于调用方法。应使用 PascalCase 命名法(每个单词首字母大写)并具有描述性(如 GetUserById)。规则:1.标识符规则 2.帕斯卡 3.有语义 4.英文 5.动词:
  • 第三步:设置参数列表(Parameters):定义传递给方法的数据,写在括号 () 内。多个参数用逗号分隔。每个参数都需要指定类型和名称。即使没有参数,括号 () 也不能省略。
  • 第四步(可选):返回类型(Return Type):方法执行完毕后返回的数据类型(如 int, string, double, bool, 或自定义的类)。如果方法不返回任何值,必须使用关键字 void
    • 对于非 void 返回类型的方法,必须使用 return 关键字来返回一个与声明类型兼容的值。
    • 对于 void 方法,return 语句可以省略(方法执行到末尾会自动返回)。也可以使用 return; 来提前结束方法,但不返回任何值。
  • 第五步:变量类型:规定方法变量名的数据类型
  • 第六步(可选):指定是否是静态方法(类的方法):static指定为静态
  • 第七步(可选):访问修饰符(Access Modifier):定义了方法的可访问性。
    • public:方法可以被任何其他代码访问。
    • private:方法只能在定义它的类内部访问(最常见的情况)。
    • protected, internal 等:用于更复杂的访问控制。

方法的语法

定义方法的语法

[访问修饰符] [静态修饰符] 返回类型 方法名(数据类型 形参名,数据类型 形参名)
{
    // 方法体 - 要执行的代码
    return 返回值; // 如果返回类型不是void
}

调用方法的语法

可以通过“调用”方法的名称来执行它里面的代码。

方法名(实参);

示例

1.无参数无返回值

namespace ConsoleApp2
{
    //默认修饰符:internal
    internal class Program
    {
        //方法定义
        public static void PrintHello()
        {
            Console.WriteLine("Hello, World!");
        }
        public static void Main(string[] args)
        {
            //方法调用
            PrintHello();
        }
    }
}

2.有参数无返回值

namespace ConsoleApp2
{
    //方法定义
    static void QueryAge(string userName, int birthYear)
    {
        int userAge = 2025 - birthYear;
        Console.WriteLine($"{userName}的年龄是{userAge}");
    }
    internal class Program
    {
        public static void Main(string[] args)
        {
             //方法调用
            QueryAge("张三", 2007);
        }
    }
}

3.有参数有返回值

namespace ConsoleApp2
{
    //默认修饰符:internal
    internal class Program
    {
        //方法定义
        static int squareValue(int value)
        {
            //return:用于设置返回值的关键字
            return value * value;
        }
        public static void Main(string[] args)
        {
            //方法调用
            squareValue(5);
        }
    }
}

4.有参数有返回值

// 定义一个加法方法
public int Add(int number1, int number2)
{
    int sum = number1 + number2;
    return sum; // 返回 int 类型的结果
}

// 调用方法
int result = Add(5, 10); // 将 5 和 10 作为参数传递,并将返回值 15 赋给 result
Console.WriteLine(result); // 输出:15

参数的用法

ref修饰符

示例:ref 修饰符在 C# 中表示引用传递,它让方法能够直接操作调用者的原始变量,而不是操作变量的副本。

static void Main(){
//示例5:ref
            int a = 5;
            Console.WriteLine($"调用前: {a}"); // 输出: 5

            //WithoutRef(a);
            //Console.WriteLine($"调用后(无ref): {a}"); // 输出: 5

            WithRef(ref a);
            Console.WriteLine($"调用后(有ref): {a}"); // 输出: 100
}      

      // 没有使用 ref 的情况 - 值传递
        public static void WithoutRef(int b)
        {
            b = 100; // 只修改副本
            Console.WriteLine($"方法内: {b}"); // 输出: 100
        }
        // 使用 ref 的情况 - 引用传递  
        public static void WithRef(ref int c)
        {
            c = 100; // 修改原始变量
            Console.WriteLine($"方法内: {c}"); // 输出: 100
        }

示例:下面的num1和num2分别是多少

private static void Increase(ref int num1, int num2)
{
    num1++;
    num2++;

}
static void Main(string[] args)
{
    int num1 = 34;
    int num2 = 55;
    Increase(ref num1, num2);
    Console.WriteLine("{0}和{1}",num1,num2);

}

使用 out 参数(一个方法返回多个值)

有时你需要从一个方法返回多个值,return 关键字只能返回一个。这时可以使用 out 参数。

// 方法尝试将字符串转换为整数,并通过 out 参数返回转换后的值,自身返回转换是否成功
public bool TryParseInt(string input, out int result)
{
    try
    {
        result = int.Parse(input); // 为 out 参数赋值
        return true; // 转换成功,返回 true
    }
    catch
    {
        result = 0; // 即使失败,也必须为 out 参数赋值
        return false; // 转换失败,返回 false
    }
}

// 调用方法
string userInput = "42";
if (TryParseInt(userInput, out int parsedValue)) // 调用时也需要使用 out 关键字
{
    Console.WriteLine($"Parsing successful! Value is {parsedValue}");
}
else
{
    Console.WriteLine("Parsing failed!");
}
// .NET 自带的 int.TryParse() 方法正是这样工作的

参数(Parameter) vs. 实参(Argument)

重要概念区分

  • 参数(Parameter):是方法定义时声变量。它们是方法的“占位符”。
    • 例如:(int number1, int number2) 中的 number1number2 是参数。
  • 实参(Argument):是调用方法时实际传递给参数的具体值或表达式。
    • 例如:在 Add(5, 10) 中,510 是实参。

简单记:参数是变量,实参是值。


return语句的用法

return语句用于终止执行并将控制权(可能带有值)返回给调用者。void 方法可省略或用 return; 提前结束

方法名字

  1. 给方法起好名字

一个好名字的方法(如 CalculateSalary(), ValidateUserInput())可以清晰地表达代码的意图,让读者一眼就知道这段代码在做什么。

// ✅ 好的名字 - 一看就知道做什么
public static double 计算圆的面积(double 半径)
public static string 获取用户名(int 用户ID)

// ❌ 不好的名字 - 太模糊
public static void 处理()
public static int 方法1()
  1. 保持方法简短
// ✅ 好的:每个方法只做一件事
public static double 计算折扣(double 原价, double 折扣率)
{
    return 原价 * 折扣率;
}

public static double 计算总价(double 折后价, double 税费)
{
    return 折后价 + 税费;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容