2016-10-13 4 views
2

Warum unterstützt ProtoBuff.Net nicht null?ProtoBuff.Net unterstützt keine Null. Warum?

Ich ging durch ProtoBuf und fragte mich, warum null Werte nicht unterstützt werden. Wenn wir versuchen, null Wert zuzuweisen, gibt es eine Ausnahme. Auch ref kindartige Saiten unterstützen dies nicht.

pb::ThrowHelper.ThrowIfNull(value, "value"); 

Ich weiß, dass PROTOs Dinge Mindestgrund behalten will, so dass es große Anzahl von Sprachen unterstützen (deshalb keine DateTime), aber null ein Konzept für Sprachen ist?

Oder vielleicht bin ich etwas übersehen.

+0

Es ist nicht klar, ob Sie über Protokollpuffer im Allgemeinen sprechen, oder eine spezifische Implementierung von ihnen für .NET (protobuf.net vielleicht?) –

+0

ja. ProtoBuf.Net um genau zu sein. –

+0

Richtig - möchten Sie vielleicht sowohl Ihre Frage Titel und die erste Zeile des Körpers der Frage zu ändern ... –

Antwort

3

Einfach, weil die zugrunde liegende Protokoll-Spezifikation ("Protobuf") hat kein Konzept null und keine Möglichkeit, es auszudrücken. Wenn ich es im Protokoll nicht ausdrücken kann, ist das Beste, was unterstützt werden kann, eine Art implizites "die Abwesenheit von etwas bedeutet, lass es in Ruhe, was bedeutet, dass es wahrscheinlich null sein wird".

+0

aber ist nicht 'null' ein globales Konzept über Programmierparadigmen wie 'int'? –

+0

@NikhilAgrawal Sie könnten überrascht sein zu erfahren, dass z. JavaScript hat nicht wirklich ganze Zahlen :) – jpa

+0

@NikhilAgrawal Sie können das mit den Leuten, die das Protokoll entworfen ... –

Verwandte Themen