比如
public class ExampleClass()
{
public static void DoSometing(string strParam)//静态方法
{
//做一些事情,比如吐槽,把妹,上CSDN
}
public void DoSometing(string strParam)//实例方法
{
//做一些事情,比如吐槽,把妹,上CSDN
}
}
我们调用方法可用ExampleClass.DoSometing(string strParam)
也可以这样调用 ExampleClass myClass = new ExampleClass()
myClass.DoSometing(string strParam)
这两种方法有何不同,既然静态方法可以省去New这一步,为何不都用静态方法,这样代码还简洁编程中国社区
public class ExampleClass()
{
public static void DoSometing(string strParam)//静态方法
{
//做一些事情,比如吐槽,把妹,上CSDN
}
public void DoSometing(string strParam)//实例方法
{
//做一些事情,比如吐槽,把妹,上CSDN
}
}
我们调用方法可用ExampleClass.DoSometing(string strParam)
也可以这样调用 ExampleClass myClass = new ExampleClass()
myClass.DoSometing(string strParam)
这两种方法有何不同,既然静态方法可以省去New这一步,为何不都用静态方法,这样代码还简洁编程中国社区
解决方案 »
- 请问 怎么模拟点击WEBBROWSER上的TABLE的某项?
- C# indows服务 。根据系统时间将信息存储到log.txt文件中
- 求Aspose.Cells api
- 有谁在VS2005中使用过resharper
- 编辑png文件有什么好用的软件么?
- 关于强名称的问题,怎么把.dll文件使用强名称签名?
- help!救命啊!
- 3DSMAX做一个3D模型,如何在C#代码引入,如何在C#代码旋转
- 请问那位知道在c#中怎样把操作电脑的动作做成视频流,谢谢了。
- 在C#中如何弹出个对话框或提示框,那个方法?
- 求解关于通过js异步绑定类似Treeview控件的树形菜单
- 如何检测别的软件打开时读取了哪些硬件信息?
静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
Math.Sin() 方法,你觉得求sin需要Math类的什么状态?不需要吧。
string.Trim() 方法则不同,你需要知道具体的string才能对它截取。给一个极端的例子,比如“单例模式”,通过封闭构造函数和使用GetInstance获取对象,显然这个方法必须是静态的。当然,任何成员方法,都可以改造成静态方法,只要把成员变成一个参数,比如
string->Trim()完全可以用string::Trim(string this)表示。这样,面向对象可以完全退回面向过程的方法——事实上,编译器可以把任何面向对象的代码转换成面向过程的形式(机器就是面向过程的)。那么你的问题退回了“什么时候我们要面向对象”,答案很简单——当你从码农进化成程序员的时候,前者的目标是完成功能,后者在此之上追求优雅、高质量、容易理解和维护的设计。