【发布时间】:2013-11-15 21:45:50
【问题描述】:
编辑:我的问题不是关于 using 块及其工作原理。我的问题是关于这两种方法的区别,如下所示。
我在看CQRS旅程指南,这行代码看不懂:
using (repo as IDisposable)
这是什么意思?为什么将它用作 IDisposable?在典型的 using 块中,不需要将其用作 IDisposable:
using (var repo = this.respositoryFactory()) { // ... }
知道为什么作者是用第一种方式而不是第二种方式写的吗?
这是该代码出现的方法:
private Conference.Web.Public.Models.Conference GetConference(string conferenceCode)
{
var repo = this.repositoryFactory();
using (repo as IDisposable)
{
var conference = repo.Query<Conference>()
.First(c => c.Code == conferenceCode);
var conferenceModel =
new Conference.Web.Public.Models.Conference
{
Code = conference.Code,
Name = conference.Name,
Description = conference.Description
};
return conferenceModel;
}
}
【问题讨论】:
-
简单,你不能在 using 块中使用任何旧类型,它必须是 IDisposable 的类型。
-
如果实例的类没有实现
IDisposable,as IDisposable如何神奇地允许释放实例?如果它已经实现了IDisposable,那为什么using语句还不够呢?我从未见过它需要演员表。 -
@iamkrillin 如果它已经是一次性的,您不必在 using 块中设置“as IDisposable”。
-
嗯,简短的回答,演员是没有必要的。
标签: c# idisposable using