запустить C # protobuf пример с ошибками - PullRequest
0 голосов
/ 08 ноября 2018

Новичок в C #, я установил Rider на MacOS и установил в решение Google.Protobuf и protobuf-net. И я нахожу пример C # protobuf по link и добавляю файлы в решение. Однако, когда я компилирую файлы .cs, я получаю эти ошибки.

Addressbook.cs (263, 57): [CS1615] Аргумент 1 не может быть передан с ключевым словом ref
Addressbook.cs (445, 61): [CS1615] Аргумент 1 не может быть передан с ключевым словом ref
Addressbook.cs (580, 57): [CS1615] Аргумент 1 не может быть передан с ключевым словом ref

Так как решить эти проблемы?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Сравнивая официальные примеры и файлы protoc --csharp_out, я обнаружил, что разница появляется в предложении, упомянутом @nnty. В официальных примерах этот пункт заменен на

_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);

, поэтому поменяйте место ошибки с помощью приведенного выше предложения, чтобы решить проблему.

0 голосов
/ 08 ноября 2018

Кажется, что аргумент методов не принимает ссылку: ref argument;

Чтобы решить эту проблему, обязательно удалите ref перед аргументами в строках. 263, 445, 580 файла Addressbook.cs.

пример дан:

if (!pb::UnknownFieldSet.MergeFieldFrom(ref _unknownFields, input)) {
          return;
}

должно быть:

if (!pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input)) {
          return;
}
...