c#方法

2022-10-08

c#方法

一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。

方法签名

通过指定在 classstruct 中声明方法:

  • 可选的访问级别,如 publicprivate。 默认值为 private
  • 可选的修饰符,如 abstractsealed
  • 返回值,或 void(如果该方法不具有)。
  • 方法名。
  • 任何方法参数。 方法参数在括号内,并且用逗号分隔。 空括号指示方法不需要任何参数。

c# 中定义方法

当定义一个方法时,从根本上说是在声明它的结构的元素。在 c# 中,定义方法的语法如下:

<access specifier> <return type> <method name>(parameter list)
{
   method body
}

方法的各个元素:

  • access specifier:访问修饰符,这个决定了变量或方法对于另一个类的可见性。
  • return type:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void
  • method name:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。
  • parameter list:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
  • method body:方法主体,包含了完成任务所需的指令集。

下面的类包含三个方法:

abstract class motorcycle
{
    public void startengine() { }
    protected void addgas(int gallons) {  }
    public virtual int drive(int miles, int speed) {  return 1; }
    public abstract double gettopspeed(); 
}

方法访问(调用)

在对象上调用方法类似于访问字段。 在对象名称之后,依次添加句点、方法名称和括号。 参数在括号内列出,并用逗号隔开。 因此,可以按以下示例中的方式调用 motorcycle 类的方法:

class testmotorcycle : motorcycle
{
    public override double gettopspeed()
    {
        return 108.4;
    }
    static void main()
    {
        testmotorcycle moto = new testmotorcycle();
        moto.startengine();
        moto.addgas(15);
        moto.drive(5, 20);
        double speed = moto.gettopspeed();
        console.writeline("my top speed is {0}", speed);            
    }
}

参数传递

当调用带有参数的方法时,您需要向方法传递参数。在 c# 中,有三种向方法传递参数的方式:

方式 描述
值参数 这种方式复制参数的实际值给函数的形式参数,实参和形参使用的是两个不同内存中的值。在这种情况下,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全。
引用参数 这种方式复制参数的内存位置的引用给形式参数。这意味着,当形参的值发生改变时,同时也改变实参的值。
输出参数 这种方式可以返回多个值。

返回值

方法可以向调用方返回值。 如果返回类型(方法名称前列出的类型)不是 void,则方法可以使用 return 关键字来返回值。 如果语句中 return 关键字的后面是与返回类型匹配的值,则该语句将该值返回给方法调用方。 return 关键字还会停止方法的执行。 如果返回类型为 void,则可使用没有值的 return 语句来停止方法的执行。 如果没有 return 关键字,方法执行到代码块末尾时即会停止。 具有非 void 返回类型的方法才能使用 return 关键字返回值。

异步方法

通过使用异步功能,你可以调用异步方法而无需使用显式回调,也不需要跨多个方法或 lambda 表达式来手动拆分代码。

异步方法可以具有 task、task、 或 void 返回类型。 void 返回类型主要用于定义需要 void 返回类型的事件处理程序。 无法等待返回 void 的异步方法,并且返回 void 方法的调用方无法捕获该方法引发的异常。 从 c# 7.0 开始,异步方法可以有。

在下面的示例中,delayasync 是一个异步方法,包含返回整数的 return 语句。 由于它是异步方法,其方法声明必须具有返回类型 task。 因为返回类型是 taskawaitdosomethingasync 表达式的计算将如以下 int result = await delaytask 语句所示得出整数。

using system;
using system.diagnostics;
using system.threading.tasks;

public class example
{
    // this click event is marked with the async modifier.
    public static void main()
    {
       dosomethingasync().wait();
    }
    private static async task dosomethingasync()
    {
        int result = await delayasync();
        console.writeline("result: " + result);
    }
    private static async task<int> delayasync()
    {
        await task.delay(100);
        return 5;
    }
    // output:
    //  result: 5
}
// the example displays the following output:
//        result: 5

异步方法不能声明任何 、 或 参数,但是可以调用具有这类参数的方法。

《c#方法.doc》

下载本文的Word格式文档,以方便收藏与打印。