Это ограничение в protobuf
Да.Повторное Int32Value
работает так же, как и другие повторяющиеся сообщения: нет способа представить нольОбратите внимание, что на проводе нет специальной обработки для Int32Value
, и многие языки вообще не имеют никакой специальной специальной обработки для нее.И да, это означает, что поле repeated Int32Value
довольно бессмысленно.Это общий оператор, а не что-либо специфичное для C #.
Если вы хотите иметь возможность представлять повторяющееся поле с некоторыми пустыми записями, вам нужно создать сообщение, заключающее в себеобертка:
message Int32ValueWrapper
{
Int32Value value = 1;
}
... тогда есть поле repeated Int32ValueWrapper
.Это будет заполнено элементами Int32ValueWrapper
, все из которых будут ненулевыми, но некоторые из них могут быть пустыми (поэтому поле value
не заполнено).
Это сложная ситуация для генерации кода C #с точки зрения того, что он должен делать ... это, по сути, небольшое несоответствие импеданса.