C#的方法调用一次性实例化,还是哪里调用哪里实例化效率高?

hxftgy 2009-07-22 05:27:04
例如A代码(在每个方法中实例化DataBase Pn163 = new DataBase)


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

/// <summary>
///User
/// </summary>
public class User
{
public User()
{
//
//TODO: 在此处添加构造函数逻辑
//
}


/// <summary>
/// 添加
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool InsertUser(Model User)
{
string sql = "insert into Book(Name,QQ,Message) values('" + User.Name + "','" + User.QQ + "','" + User.Message + "')";
DataBase Pn163 = new DataBase
if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}


/// <summary>
/// 显示
/// </summary>
/// <returns></returns>
public DataSet DataSet()
{
DataBase Pn163 = new DataBase(); string sql = "select * from Book order by id desc";
return Pn163.GetDataSet(sql);

}

/// <summary>
/// 删除
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool Delete(Model User)
{
string sql = "delete from Book where id=" + User.id;
DataBase Pn163 = new DataBase(); if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}



B代码:(在类中实例化)

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

/// <summary>
///User
/// </summary>
public class User
{

DataBase Pn163 = new DataBase();

public User()
{
//
//TODO: 在此处添加构造函数逻辑
//
}


/// <summary>
/// 添加
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool InsertUser(Model User)
{
string sql = "insert into Book(Name,QQ,Message) values('" + User.Name + "','" + User.QQ + "','" + User.Message + "')";
if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}


/// <summary>
/// 显示
/// </summary>
/// <returns></returns>
public DataSet DataSet()
{
string sql = "select * from Book order by id desc";
return Pn163.GetDataSet(sql);

}

/// <summary>
/// 删除
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool Delete(Model User)
{
string sql = "delete from Book where id=" + User.id;
if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}



new实例化应该在什么地方,应该用哪种方法?区别是什么?谢谢。等待中。。。。。
...全文
239 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hxftgy 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 camelials 的回复:]
这样的效率问题不用太在意!
往往程序的效率瓶颈在差的设计或者sql的执行.
[/Quote]

这个对效率没有太大影响吗?
BossFriday 2009-07-24
  • 打赏
  • 举报
回复
这样的效率问题不用太在意!
往往程序的效率瓶颈在差的设计或者sql的执行.
hxftgy 2009-07-24
  • 打赏
  • 举报
回复
或者是在构造函数中进行实例化比较好?
hxftgy 2009-07-24
  • 打赏
  • 举报
回复
我的疑问不是静态方法和动态方法的区别问题,而是动态方法实例化的最好时机?

因为方法会在多个地方调用,是一次性实例化好,还是每个调用地方都写 DataBase mydata=new DataBase()?
RHCL 2009-07-23
  • 打赏
  • 举报
回复
该用则用~~看实际应用的地方。或static一个方法所开辟的内存十分大,还是new 一个好,具体的,看应用
gdjlc 2009-07-23
  • 打赏
  • 举报
回复
这是wuyq11如梦兄的解释:

http://topic.csdn.net/u/20090610/10/a7e17d97-5438-429c-a5fc-9bfa608ad1c8.html?2560

用实例方法,需要先创建实例,才能调用实例方法,而静态方法则不需要..
从性能上说,静态方法效率要稍微高一些,但是它会常驻内存...
一些情况下使用静态方法是有好处的,因为对于静态方法无论你有多少个实例,
内存中要维护的一份拷贝。
一般使用频繁的方法用静态方法,用的少的方法用动态的。静态的速度快,占内存。动态的速度相对慢些,但调用完后,立即释放类,
可以节省内存,可以根据自己的需要选择是用动态方法还是静态方法。
hxftgy 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wdzr_826 的回复:]
最好是这样:
C# codeusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;///<summary>///User///</summary>
publicclass User
{private DataBase Pn163;public User()
{
Pn163=new DataBase();
}
......
}
[/Quote]
为什么呢?这样为什么效率底:
/// <summary>
///User
/// </summary>
public class User
{

DataBase Pn163 = new DataBase();

public User()
{
//
//TODO: 在此处添加构造函数逻辑
//
}


/// <summary>
/// 添加
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool InsertUser(Model User)
{
string sql = "insert into Book(Name,QQ,Message) values('" + User.Name + "','" + User.QQ + "','" + User.Message + "')";
if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}


/// <summary>
/// 显示
/// </summary>
/// <returns></returns>
public DataSet DataSet()
{
string sql = "select * from Book order by id desc";
return Pn163.GetDataSet(sql);

}

/// <summary>
/// 删除
/// </summary>
/// <param name="User"></param>
/// <returns></returns>
public bool Delete(Model User)
{
string sql = "delete from Book where id=" + User.id;
if (Pn163.ExecuteCmd(sql) > 0)
return true;
else return false;
}
mbh0210 2009-07-22
  • 打赏
  • 举报
回复
在类中实例化把,如果是比较通用频繁调用的,那么就用静态的把
farwy 2009-07-22
  • 打赏
  • 举报
回复
new会在堆内存中开辟空间并初始化,而后将其引用返回。
chenyunkun2008 2009-07-22
  • 打赏
  • 举报
回复
我感觉最好用static 比较好些,省得去实例化了
wdzr_826 2009-07-22
  • 打赏
  • 举报
回复
最好是这样:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

/// <summary>
///User
/// </summary>
public class User
{

private DataBase Pn163;

public User()
{
Pn163 = new DataBase();
}
......
}
kke_007 2009-07-22
  • 打赏
  • 举报
回复
不知道你想问什么

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧