protobuf的语法3使所有字段都可选,将关键字required和optional从以前的proto2语法中删除。阅读开发人员的一些评论似乎是为了增强前向/后向二进制兼容性。但对我来说,这可以通过对包名进行版本控制来实现,比如com.example.messages.v1,然后让客户端实现他们理解的反序列化器。同时,它从软件工程的角度删除了一些声明为一种类型的合同。例如,如果我有 double l
有人能解释一下为什么这在C#.NET 2.0中有效: if (true) elsenull : new DateTime(0);
后一种形式给出了一个编译错误:“无法确定条件表达式的类型,因为'‘和’System.DateTime‘之间没有隐式转换。”并不是说我不能使用前者,而是第二种风格与我的其余代码更一致。