Sagen Sie, ich habe einen Code wie den folgenden:
%Vor% Ich möchte dann feststellen, ob result
der Standardwert war. Ich möchte dies jedoch in einer wartbaren Weise tun, so dass der Rest des Codes nicht geändert werden muss, wenn sich der Elementtyp von someCollection
ändert.
Die Art und Weise, wie dies typischerweise (im allgemeinen Sinne) zu geschehen scheint, ist result == null
. In diesem Fall ist der Typ natürlich kein Referenztyp, daher funktioniert das nicht.
Eine Verbesserung, die diese Annahme vermeidet, ist result == default(int)
. Wenn Sie jedoch den Elementtyp ändern, müssen Sie auch das Argument in default
ändern, sodass die Anforderung, nur den Typ an einer Stelle zu ändern, immer noch nicht erfüllt ist.
Von Sam stehlen und es verbessern:
%Vor%Keine Typüberprüfung erforderlich. Das JIT wird es funktionieren lassen, weil es weiß, was T zur JIT-Zeit ist.
Beachten Sie, dass, wenn der Typ Equals überschreibt, es möglicherweise false even sagt wenn es
default(T)
ist, und es könnte auch dann wahr sein, wenn es nicht ist. - kommentiert von Eric Lippert