3.5C#语言的类成员之方法(Methods)

访问修饰符    修饰符    返回值类型    方法名(参数列表)
{
    语句块;
}

方法 是实现对象或类可执行的计算或操作的成员。 静态方法 是通过类进行访问。 实例方法 是通过类实例进行访问。

方法可能包含一个参数列表,这些参数表示传递给方法的值或变量引用。 方法具有返回类型,它用于指定方法计算和返回的值的类型。 如果方法未返回值,则它的返回类型为 void

方法可能也包含一组类型参数,必须在调用方法时指定类型自变量,这一点与类型一样。 与类型不同的是,通常可以根据方法调用的自变量推断出类型自变量,无需显式指定。

在声明方法的类中,方法的 签名 必须是唯一的。 方法签名包含方法名称、类型参数数量及其参数的数量、修饰符和类型。 方法签名不包含返回类型。

当方法主体是单个表达式时,可使用紧凑表达式格式定义方法,如下例中所示:

public override string ToString() => "This is an object";

使用 static 修饰符声明的方法是静态方法。 静态方法不对特定的实例起作用,只能直接访问静态成员。

未使用 static 修饰符声明的方法是实例方法。 实例方法对特定的实例起作用,并能够访问静态和实例成员。 其中调用实例方法的实例可以作为 this 显式访问。 在静态方法中引用 this 会生成错误。

以下 Entity 类包含静态和实例成员。

class Entity
{
    static int s_nextSerialNo;
    int _serialNo;
    
    public Entity()
    {
        _serialNo = s_nextSerialNo++;
    }
    
    public int GetSerialNo()
    {
        return _serialNo;
    }
    
    public static int GetNextSerialNo()
    {
        return s_nextSerialNo;
    }
    
    public static void SetNextSerialNo(int value)
    {
        s_nextSerialNo = value;
    }
}

每个 Entity 实例均有一个序列号(很可能包含此处未显示的其他一些信息)。 Entity 构造函数(类似于实例方法)将新实例初始化为包含下一个可用的序列号。 由于构造函数是实例成员,因此可以访问 _serialNo 实例字段和 s_nextSerialNo 静态字段。

GetNextSerialNo 和 SetNextSerialNo 静态方法可以访问 s_nextSerialNo 静态字段,但如果直接访问 _serialNo 实例字段,则会生成错误。

下例显示了 Entity 类的用法。

Entity.SetNextSerialNo(1000);
Entity e1 = new Entity();
Entity e2 = new Entity();
Console.WriteLine(e1.GetSerialNo());          // Outputs "1000"
Console.WriteLine(e2.GetSerialNo());          // Outputs "1001"
Console.WriteLine(Entity.GetNextSerialNo());  // Outputs "1002"

SetNextSerialNo 和 GetNextSerialNo 静态方法在类中进行调用,而 GetSerialNo 实例方法则是在类实例中进行调用。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/basic/csharp/4066.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注