首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态方法,抽象方法,接口方法比较?

静态方法,抽象方法,接口方法比较?
EN

Stack Overflow用户
提问于 2010-04-15 14:56:25
回答 1查看 247关注 0票数 3

当我选择这些方法时?我不能决定我必须选择哪一个,或者我什么时候会使用其中一个?哪一个性能最好?

第一类用法

代码语言:javascript
复制
public abstract class _AccessorForSQL
{
   public virtual bool Save(string sp, ListDictionary ld, CommandType cmdType);
   public virtual bool Update();
   public virtual bool Delete();
   public virtual DataSet Select();
}

class GenAccessor : _AccessorForSQL
{
    DataSet ds;
    DataTable dt;
    public override bool Save(string sp, ListDictionary ld, CommandType cmdType)
    {
    }

    public override bool Update()
    {
        return true;
    }

    public override bool Delete()
    {
        return true;
    }

    public override DataSet Select()
    {
        DataSet dst = new DataSet();
        return dst;
    }
}

第二种类型用法

我也可以把它写在下面的代码中:

代码语言:javascript
复制
public class GenAccessor
{
     public Static bool Save()
     { 
     }

     public Static bool Update()
     {
     }

     public Static bool Delete()
     {
     }
}

第三种类型用法

我也可以把它写在下面的代码中:

代码语言:javascript
复制
public interface IAccessorForSQL
{
    bool Delete();
    bool Save(string sp, ListDictionary ld, CommandType cmdType);
    DataSet Select();
    bool Update();
}

public class _AccessorForSQL : IAccessorForSQL
{
    private DataSet ds;
    private DataTable dt;

    public virtual bool Save(string sp, ListDictionary ld, CommandType cmdType)
    {            
    }
}

我可以使用下面的第一个用法:

代码语言:javascript
复制
GenAccessor gen = New GenAccessor();
gen.Save();

我可以使用下面的第二个用法:

代码语言:javascript
复制
GenAccessor.Save();

你喜欢哪一种?我什么时候使用它们?什么时候需要重写方法?什么时候需要静态方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-15 15:06:21

静态方法适用于独立于对象状态的方法。通常,我会将它们用于实用方法和纯数学类型的函数。例如computeAverage(int[]值);

抽象/接口方法基本上是一样的。接口方法有一种纯契约的感觉。抽象方法的版本容忍度更高。如果你有一个契约,它可能有不同的实现,我会使用这些。

静态方法的性能更高,因为它们不需要进行虚拟表查找。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2643272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档