首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最佳方法从静态和实例方法返回新的对象/电感

最佳方法从静态和实例方法返回新的对象/电感
EN

Stack Overflow用户
提问于 2012-08-22 07:07:50
回答 2查看 320关注 0票数 0

我们有一个Basewebpage类,它具有许多常见的功能,如填充下拉列表、格式化、返回格式化的数据表等等。

什么才是好办法。

代码语言:javascript
复制
Public Class BaseWebPage
{
 ...

    public static DataTable Static_GetPersonDataTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Age");

        return dt;
    }
  ...
    public DataTable NonStatic_GetPersonDataTable()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Name");
        dt.Columns.Add("Age");

        return dt;
    }
}

这两种方法都可以称为

代码语言:javascript
复制
DataTable dt1 = BaseWebPage.Static_GetPersonDataTable();  // calling static method
...
BaseWebPage pageBase = new BaseWebPage();
DataTable dt2 = pageBase.NonStatic_GetPersonDataTable();  // calling non-static method

上述情况下的几个问题

  • 这两个方法是返回datatable的新实例,还是静态方法总是返回相同的实例?
  • 在重载(许多请求)的情况下,这些都会出现与线程相关的问题吗?
  • 如果没有副作用,那比其他副作用更好?为什么?

如果你能写一些描述性的文章,这将是非常有帮助的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-22 07:12:20

·这两种方法都会返回datatable的新实例吗?还是静态方法总是返回相同的实例?

是的,他们将返回一个新实例。

·在重载(许多请求)情况下,是否存在与线程相关的问题?

除非在方法中使用共享状态,否则为否。目前他们没有,但他们可能。甚至实例方法也可以使用共享状态。这与静态无关(统计学?)

如果没有比其他副作用更好的副作用?为什么?

这并不重要,但我会去,例如方法。在某个时候,您可能想要添加测试,并且可以在接口中提取方法并模拟对象。

加分: DataTables烂!避免使用类/对象。

票数 1
EN

Stack Overflow用户

发布于 2012-08-22 07:32:56

就我个人而言,我会让您所有的页面都成为这个baseWebPage的子类。

您可以安全地访问所有方法,而不必实例化BaseWebPage类,甚至无需键入名称(在静态时)。

代码是这样的:

所有的web页面(假设您使用的是webforms而不是mvc):

代码语言:javascript
复制
public partial class Index : BaseWebPage{
    protected void Page_Load(object sender, EventArgs e){
        var data = GetPersonDataTable();
    }
}

你的baseWebPage:

代码语言:javascript
复制
Public Class BaseWebPage : System.Web.UI.Page{
    protected DataTable GetPersonDataTable(){
        //Do your thing
    }
}

关于安全性和行为:这取决于您如何在这些方法中编写代码。

但是,在静态和非静态中,您可以安全地让多线程返回DataTable的多个不同实例。

但是,如果有意的话,您也可以每次返回相同的实例。这将取决于您正在使用的代码和资源。

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

https://stackoverflow.com/questions/12067928

复制
相关文章

相似问题

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