使用C#的新手,我在MacOS上安装了Rider,并在解决方案中安装了Google.Protobuf和protobuf-net。我在link上找到了C#protobuf的示例,并将文件添加到解决方案中。但是,当我编译.cs
文件时,出现了这些错误。
Addressbook.cs(263,57):[CS1615]参数1可能无法与'ref'关键字一起传递
Addressbook.cs(445,61):[CS1615]参数1可能无法与'ref'关键字一起传递
Addressbook.cs(580,57):[CS1615]参数1可能无法与'ref'关键字一起传递
那么如何解决这些问题?
答案 0 :(得分:0)
方法参数似乎不接受引用:ref argument
;
要解决此问题,请确保删除行中参数前的ref
Addressbook.cs文件的263、445、580。
示例:
if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) {
return;
}
应为:
if (!pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input)) {
return;
}
答案 1 :(得分:0)
通过比较官方示例和protoc --csharp_out文件,我发现差异出现在@nnty提到的子句中。在官方示例中,该子句替换为
DECLARE
@t1 TABLE ( ProductID VARCHAR(50), ICommitted INT)
INSERT INTO @t1 VALUES ('Some product', 7)
DECLARE
@t2 TABLE (RowID INT, DueDate DATE, IncommingQuantity INT)
INSERT INTO @t2 VALUES
(1,'2018-11-19', 5),
(2,'2018-11-20', 4),
(3,'2018-11-20', 4),
(4,'2018-11-20', 3),
(5,'2018-11-22', 12)
SELECT
RowID
, DueDate
, CASE
WHEN RowID = 1
THEN 0
WHEN RowID = LAST_VALUE(RowID) OVER(ORDER BY (SELECT NULL) )
THEN IncommingQuantity
WHEN ROW_NUMBER() OVER(PARTITION BY DueDate ORDER BY RowID) > 1
THEN IncommingQuantity
ELSE ICommitted - LAG(IncommingQuantity) OVER (ORDER BY RowID)
END IncommingQuantity
FROM @t2 t2
CROSS APPLY (SELECT t1.ICommitted FROM @t1 t1) e
因此,用上面的句子更改所有错误的位置可能有助于解决问题。