1

我在使用 Windows Phone 7.1 的 sql-net 和 C# Sqlite 组合时遇到了一些“ref”与“out”关键字错误。这是由于我使用的库组合错误吗?

应用类型:Windows Phone 7.1

使用:

  1. sql-net 版本 1.0.5,通过 Visual Studio 源 Nuget
  2. C# Sqlite for WP7 (wp7sqlite) (Community.CSharpSqlite.WP7) 版本 0.1.1,通过 Visual Studio 源 Nuget。

我收到的确切错误如下

错误 5 Community.CsharpSqlite.Sqlite3.sqlite3_open(string, ref Community.CsharpSqlite.Sqlite3.sqlite3)' 的最佳重载方法匹配有一些无效参数 C:\Dev\Learning\SQLite.cs Line:2492 Column: 29

然后下一个错误提示它与作为“out”类型而不是“ref”类型传递的参数有关。

错误 6 参数 2 必须使用 'ref' 关键字 C:\Dev\Learning\SQLite.cs 传递 行:2492 列:64

我可以通过用“ref”关键字替换“out”关键字来消除编译错误,但这可能会导致其他问题。鉴于我没有看到太多抱怨这个问题 - 我可能做错了什么但无法轻易检测到。

4

2 回答 2

2

该参数在 csharp-sqlite(sqlite-net 使用的可选(?))中在 3.7.6.3 和 3.7.7.1 之间从refto 更改out,请参阅此提交(查找第 2692 行)。

如果您不想更新代码,则需要使用较新版本的 csharp-sqlite。您可能没有看到很多关于此的问题,因为无论出于何种原因,您都是少数使用旧版本的人之一。

于 2012-11-26T11:01:58.460 回答
0

以下方法签名

Community.CsharpSqlite.Sqlite3.sqlite3_open(string, ref Community.CsharpSqlite.Sqlite3.sqlite3)

明确指出第二个参数是通过引用传递的 ( ref)

因此,在调用此方法时使用ref关键字而不是out.

在这里您还可以找到很多信息:

.NET 中 ref 和 out 参数的区别

于 2012-11-26T10:17:00.963 回答