在同一个c#或c++类中可以有静态方法和实例方法吗?

can you have static and instance methods in the same c# or c++ class ?

本文关键字:静态方法 实例方法 同一个 c++      更新时间:2023-10-16

可以在同一个c#或c++类中使用静态方法和实例方法吗?
如果是,那两者都有什么用,如果不是,为什么不呢?

当然可以!

静态方法不传递隐式的this指针,并且在不需要对该类/类型的特定实例进行操作(例如修改其成员)时使用。

如果确实需要修改一个特定的实例,你应该使用实例方法。

这两种类型的方法没有理由不能在同一个类中一起声明。如果您正在使用c#,请查看。net框架定义的一些类。它们中的许多都有静态和实例方法。这将给你一些关于如何有效使用这些的想法。

在c++中,甚至没有理由创建一个"静态"类(具有所有静态方法的类),就像你在c#中发现的那样。更好的方法是将函数作为自由函数放在名称空间中。不是所有东西都必须是"对象"

你可以。

有很多用途。静态方法通常是库工具,可以应用于类的实例。

实例方法是由每个特定实例调用的方法。

是的,这里有一个来自框架本身的实际示例:

namespace System
{
    public struct Int32 //...
    {
        public const int MaxValue = 2147483647;
        //...
        public TypeCode GetTypeCode();
        public static int Parse(string s);
        //...
     }
}

只有那些需要在同一原始类的每个对象中平等地共享的成员保持静态,例如,如果你有一个静态方法(静态方法也需要返回类的静态值),静态成员甚至在你创建该类的对象之前被初始化。

现在你也问了为什么和为什么不,记住,如果你开始以面向对象的方式思考,有一千种方法和一千种理由。