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 に設定することは、お勧めしません。 これは、相互運用性の維持やデータ サイズの縮小のような特別なニーズがある場合以外は行わないでください。

適用対象