2011-12-20 68 views
-4

你可以在同一个c#或C++类中有静态和实例方法吗?
如果是的话,如果没有,为什么不这样做会有什么用?你可以在同一个c#或C++类中有静态和实例方法吗?

+2

这功课吗? – ibid 2011-12-20 08:56:13

+1

你可以给一个特定的*例子,代码?而且,请将您的问题限制为一种语言。 C#和C++完全不同。 – 2011-12-20 08:56:39

+1

看看框架的String类...你会得到两个问题的答案。 – Jonathan 2011-12-20 08:58:47

回答

3

是的,当然你可以!

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

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

没有理由这两种类型的方法不能在同一个类中一起声明。如果您使用的是C#,请查看.NET Framework定义的一些类。其中很多都有静态和实例方法。这会给你一些关于如何有效使用这些东西的想法。在C++中,没有理由甚至创建一个“静态”类(其中一个包含所有静态方法),就像你在C#中发现的那样。更好的方法是将函数作为自由函数放入名称空间。并非所有东西都必须是“对象”。

1

是的,你可以。

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

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

+0

谢谢大家。现在不做作业,但是,我正在学习这些东西。 – steelponey 2011-12-20 09:04:20

1

是的,这里是从框架本身一个实际的例子:这是需要加以虽然每同源类的每个对象均摊

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

     //... 

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

     //... 
    } 
} 
1

只有那些成员保持静态,例如,如果你有一个静态方法(静态方法也需要返回该类的静态值),静态成员即使在创建该类的对象之前也会启动。

现在您还问了为什么,为什么不呢,记住有千种方法可以这样做,如果您开始以面向对象的方式开始思考,千万个理由。

相关问题