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

时间:2011-12-20 08:55:13

标签: c# c++ static static-methods

你可以在同一个c#或c ++类中使用静态和实例方法吗? 如果是的话,如果没有,那么两者的用途是什么?

4 个答案:

答案 0 :(得分:3)

是的,当然可以!

静态方法不传递隐式this指针,只要您不需要操作该类/类型的特定实例(例如修改其成员),就会使用它。

如果需要修改特定实例,则应使用实例方法。

没有理由不能在同一个类中一起声明这两种类型的方法。如果您使用的是C#,请查看.NET Framework定义的一些类。很多都有静态和实例方法。这将使您了解如何有效地使用它们。

在C ++中,没有理由像在C#中那样创建一个“静态”类(一个包含所有静态方法)。更好的方法是将函数作为自由函数放入命名空间。并非一切都必须是“对象”。

答案 1 :(得分:1)

是的,你可以。

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

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

答案 2 :(得分:1)

是的,这是框架本身的一个实际例子:

namespace System
{
    public struct Int32 //...
    {
        public const int MaxValue = 2147483647;

        //...

        public TypeCode GetTypeCode();
        public static int Parse(string s);

        //...
     }
}

答案 3 :(得分:1)

只有那些成员保持静态,需要通过相同原始类的每个对象共享,例如,如果你有一个静态方法(静态方法也需要返回类的静态值),即使您创建该类的对象,也会启动静态成员。

现在你也问过为什么以及为什么不这样做,请记住,如果你开始以面向对象的方式思考,有千种方法可以做到这一点以及千个原因。