DataMemberAttribute.EmitDefaultValue 屬性

定義

取得或設定值,這個值會指定即將序列化之欄位或屬性的預設值是否要加以序列化。

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。 您應該只在特定需求時才這樣處理 (例如,為了提供互通性或是縮減資料大小)。

適用於