2013-09-01 11 views
15

traf ich einen Code unterWas macht System.Reflection.Missing.Value?

Object oMissing = System.Reflection.Missing.Value 
oDataDoc = wrdApp.Documents.Open(ref oName, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing); 

Ich verstehe nicht, was oMissing tun ref. Wird es automatisch die Werte oder etwas ähnliches bekommen?

+1

Wow, was zum Teufel, warum wird dieser Wert als Referenz übergeben? –

+0

@SargeBorsch wer weiß? Ich denke, das ist etwas 'COM'-Zeug, und' COM'-Zeug ist immer nicht gut lesbar. –

+1

Ja, ich stimme dir vollkommen zu. –

Antwort

9

Es entspricht null Wert. Beachten Sie, dass null zu Missing.Value nicht gleich

einfach mehr Informationen hinzuzufügen, wie Sie unten im Screenshot sehen können, ist Missing.Value NICHT gleich null, und in der Tat eine neue Instanz von Missing Klassenobjekt

enter image description here

+1

dann was gleich zu fehlen ist. Wert –

+6

Wenn Sie diesen Wert übergeben, würde die Word-API behandeln, dass für den jeweiligen Parameter kein Wert angegeben wird. In VB.NET können Sie vermeiden, Werte zu senden, an denen Sie nicht interessiert sind. aber früher C# wird nicht verwendet, um Standardparameter zu unterstützen. Daher wird _Missing.Value_ als Alternative verwendet. Im Gegensatz zu null erlaubt Missing.Value dem API, den Standardwert dieses Parameters (wie in seiner Klasse definiert) zu übernehmen und mit der Verarbeitung fortzufahren. – Prash

+0

Okkk hat es Dankeschön –

3

Es repräsentiert den null Wert.

Von MSDN

Repräsentiert die einzige Instanz der fehlenden Klasse.

+1

Warum können wir nicht Null statt Missing.Value übergeben Ich verstehe nicht die Logik dahinter –

+0

@MurtazaMunshi Ich denke, wenn der Wert null ist, kann das Verhalten von den 'Missing.Value' abweichen. –

+0

Wenn Sie den Wert als Null übergeben, wird für die Parameter kein Wert angegeben. Überprüfen Sie auch dieses Forum: - http://forums.asp.net/t/1636505.aspx/1 –