f#关键字的使用和使用
问题描述:
我想用F#使用System.Data.Sqlite
。在C#中,我有一个像f#关键字的使用和使用
using (DbTransaction dbTrans = con.BeginTransaction()) {
using (SQLiteCommand cmd = con.CreateCommand()) {
//blahblah
}
dbTrans.Commit();
}
但在F#代码,当我使用similiar 2 using
上面我的the type bool is not compatible with the type IDisposable
错误... 编辑我为我的问题真的很抱歉。 use
将在F#的情况下工作。我只是不知道如何关闭/删除我的quesetions。
答
在F#
它
use dbTrans = new con.BeginTransaction()
和
use cmd = con.CreateCommand()
当你的函数结束
答
要添加一些细节,这些将部署 - 如果你需要一个命令是有效的显式标记范围(以获得与您的C#示例中完全相同的行为,其中cmd
id在致电Commit
之前已处理),您可以编写:
use dbTrans = con.BeginTransaction()
(use cmd = con.CreateCommand()
cmd.BlahBlahBlah())
dbTrans.Commit()
范围只是表达式中定义符号的一部分,因此您可以使用圆括号将其显式化。
using
只是一个F#函数,您可以在添加特殊语法之前使用use
。仅供参考,语法如下:
using (con.BeginTransaction()) (fun dbTrans ->
using (con.CreateCommand()) (fun cmd ->
cmd.BlahBlahBlah())
dbTrans.Commit())
写的用use
绝对是一个更好的主意代码(但是你可以这样定义using
的功能封装更有趣的行为 - 例如交易)。
我不知道你是否真的需要删除这个问题。这不是一个坏问题:它得到了赞赏,还有两个体面的答案。 – Benjol 2011-02-14 06:40:29