java idisposable_在C#中实现IDisposable [重复]

这个问题在这里已有答案:

我试图在示例程序中实现IDisposable . 如果我在using block语句中使用SqlConnection类,它将自动处理它 .

public int testCon()

{

using (SqlConnection conn = new SqlConnection("Conn string"))

{

using (SqlCommand cmd = conn.CreateCommand())

{

conn.Open();

cmd.CommandText = "SELECT COUNT(1) FROM Carsd";

return (int)cmd.ExecuteScalar();

}

}

}

我创建了一个类并实现了IDisposable . 我在using block语句中创建了一个新实例 .

class Program

{

static void Main(string[] args)

{

testDispose objTestDispose;

using (objTestDispose = new testDispose())

{

objTestDispose.UserName = "testUser";

objTestDispose.PassWord = "testPassword";

}

Console.WriteLine("Check obj of testDispose Class" + objTestDispose.UserName);

Console.WriteLine("Check obj of testDispose Class" + objTestDispose.PassWord);

Console.ReadLine();

}

}

public class testDispose : IDisposable

{

public string UserName { get; set; }

public string PassWord { get; set; }

public void Dispose()

{ }

}

我相信,使用block自动调用dispose方法 . 因此,如果我在使用块中创建一个新实例,它将在现有的使用块之后进行配置 . 但是,我仍然能够在使用block.WHY之外访问objTestDispose对象?

请建议 .

UDPATE

Mr.BWA ..谢谢你让我的问题重复 . 但你应该知道我是一名学生并且正在学习 . 我脑子里有这个问题,所以我在这里问过 . **您不能仅为非托管资源说IDisposable接口 . **我也可以删除托管资源 . 这取决于实际情况 . 按照以下link -

如果您的对象已将250MB System.Drawing.Bitmap(即.NET托管的Bitmap类)分配为某种帧缓冲区,该怎么办?当然,这是一个托管的.NET对象,垃圾收集器将释放它 . 但是你真的想留下250MB的内存 - 等待垃圾收集器最终出现并释放它吗?如果有一个开放的数据库连接怎么办?当然,我们不希望该连接处于打开状态,等待GC完成对象 . 如果用户调用了Dispose()(意味着他们不再计划使用该对象),为什么不摆脱那些浪费的位图和数据库连接?所以现在我们将:摆脱非托管资源(因为我们必须),并摆脱托管资源(因为我们希望有所帮助)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值