DataMemberAttribute.EmitDefaultValue 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值會指定即將序列化之欄位或屬性的預設值是否要加以序列化。
public:
property bool EmitDefaultValue { bool get(); void set(bool value); };
public bool EmitDefaultValue { get; set; }
member this.EmitDefaultValue : bool with get, set
Public Property EmitDefaultValue As Boolean
屬性值
如果應該要在序列化資料流中產生成員的預設值,則為 true
,否則為 false
。 預設為 true
。
範例
下列程式碼範例會示範在各種欄位上將 EmitDefaultValue 屬性設定為 false
。
[DataContract]
public class Employee
{
// The CLR default for as string is a null value.
// This will be written as <employeeName xsi:nill="true" />
[DataMember]
public string EmployeeName = null;
// This will be written as <employeeID>0</employeeID>
[DataMember]
public int employeeID = 0;
// The next three will not be written because the EmitDefaultValue = false.
[DataMember(EmitDefaultValue = false)]
public string position = null;
[DataMember(EmitDefaultValue = false)]
public int salary = 0;
[DataMember(EmitDefaultValue = false)]
public int? bonus = null;
// This will be written as <targetSalary>57800</targetSalary>
[DataMember(EmitDefaultValue = false)]
public int targetSalary = 57800;
}
<DataContract()> _
Public Class Employee
' The CLR default for as string is a null value.
' This will be written as <employeeName xsi:nil="true" />
<DataMember()> _
Public employeeName As String = Nothing
' This will be written as <employeeID>0</employeeID>
<DataMember()> _
Public employeeID As Integer = 0
' The next two will not be written because the EmitDefaultValue = false.
<DataMember(EmitDefaultValue := False)> Public position As String = Nothing
<DataMember(EmitDefaultValue := False)> Public salary As Integer = 0
' This will be written as <targetSalary>555</targetSalary> because
' the 555 does not match the .NET default of 0.
<DataMember(EmitDefaultValue := False)> Public targetSalary As Integer = 555
End Class
備註
在 .NET Framework 中,類型內含有預設值的概念。 例如,針對任何參考型別,預設值為 null
,而整數類型則為 0。 有時候,當資料成員設為預設值時,會需要從序列化資料中省略該資料成員。 若要這麼做,請將 EmitDefaultValue 屬性設定為 false
(預設值為 true
)。
注意
我們建議不要將 EmitDefaultValue 屬性設定為 false
。 您應該只在特定需求時才這樣處理 (例如,為了提供互通性或是縮減資料大小)。