NonSerializedAttribute クラスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > NonSerializedAttribute クラスの意味・解説 

NonSerializedAttribute クラス

シリアル化できるクラスフィールドシリアル化しないことを示します。このクラス継承できません。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<AttributeUsageAttribute(AttributeTargets.Field, Inherited:=False)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class
 NonSerializedAttribute
    Inherits Attribute
Dim instance As NonSerializedAttribute
[AttributeUsageAttribute(AttributeTargets.Field, Inherited=false)]
 
[ComVisibleAttribute(true)] 
public sealed class NonSerializedAttribute
 : Attribute
[AttributeUsageAttribute(AttributeTargets::Field, Inherited=false)]
 
[ComVisibleAttribute(true)] 
public ref class NonSerializedAttribute sealed
 : public Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Field, Inherited=false)
 */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class NonSerializedAttribute extends
 Attribute
AttributeUsageAttribute(AttributeTargets.Field, Inherited=false)
 
ComVisibleAttribute(true) 
public final class NonSerializedAttribute extends
 Attribute
解説解説

BinaryFormatter クラスまたは SoapFormatter クラス使用してオブジェクトシリアル化する場合は、NonSerializedAttribute 属性使用してフィールドシリアル化されないようにします。たとえば、この属性使用して、重要情報シリアル化されるのを防ぐことができます

NonSerializedAttribute 属性対象オブジェクトは、シリアル化できるクラスパブリック フィールドおよびプライベート フィールドです。既定では、クラスは SerializableAttribute によってマーク付けされていない限りシリアル化できません。シリアル化処理時には既定としてクラスすべてのパブリック フィールドおよびプライベート フィールドシリアル化されますNonSerializedAttribute によってマーク付けされたフィールドは、シリアル化実行時除外されます。XmlSerializer クラス使用してオブジェクトシリアル化する場合は、XmlIgnoreAttribute クラス使用して同じ機能を得ることができますまた、ISerializable インターフェイス実装することにより、シリアル化処理を明示的に制御することもできますISerializable実装しているクラスにも SerializableAttributeマーク付けする必要があります

NonSerializedAttribute クラスイベント適用するには、次の C# コードのように、属性位置フィールド設定します

[field:NonSerializedAttribute()] 
public event ChangedEventHandler Changed;

シリアル化しないフィールドでも、シリアル化後に既定値指定する必要がある場合は、フィールドに値を提供するメソッド作成し、そのメソッドに対して OnDeserializedAttribute を適用できます

属性使用方法については、「属性使用したメタデータ拡張」を参照してください

使用例使用例

SerializableAttribute 属性マーク付けされたオブジェクトシリアル化と、シリアル化されたオブジェクトでの、NonSerializedAttributeマーク付けされたフィールド動作を、次の例に示します

Imports System
Imports System.IO
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Soap




Public Class Test
   
   Public Shared Sub Main()
      
      ' Creates a new TestSimpleObject object.
      Dim obj As New TestSimpleObject()
      
      Console.WriteLine("Before serialization the object contains:
 ")
      obj.Print()
      
      ' Opens a file and serializes the object into it in binary format.
      Dim stream As Stream = File.Open("data.xml",
 FileMode.Create)
      Dim formatter As New
 SoapFormatter()
      


      formatter.Serialize(stream, obj)
      stream.Close()
      
      ' Empties obj.
      obj = Nothing
      
      ' Opens file "data.xml" and deserializes the object
 from it.
      stream = File.Open("data.xml", FileMode.Open)
      formatter = New SoapFormatter()



      obj = CType(formatter.Deserialize(stream), TestSimpleObject)
      stream.Close()
      
      Console.WriteLine("")
      Console.WriteLine("After deserialization the object contains:
 ")
      obj.Print()

   End Sub 'Main

End Class 'Test


' A test object that needs to be serialized.
<Serializable()> Public Class TestSimpleObject
   
   Public member1 As Integer
   Public member2 As String
   Public member3 As String
   Public member4 As Double
   
   ' A member that is not serialized.
   <NonSerialized()> Public member5 As
 String  
  
   
   Public Sub New()    
 
      member1 = 11
      member2 = "hello"
      member3 = "hello"
      member4 = 3.14159265
      member5 = "hello world!"
   End Sub 'New
      
   
   Public Sub Print()      
      Console.WriteLine("member1 = '{0}'", member1)
      Console.WriteLine("member2 = '{0}'", member2)
      Console.WriteLine("member3 = '{0}'", member3)
      Console.WriteLine("member4 = '{0}'", member4)
      Console.WriteLine("member5 = '{0}'", member5)
   End Sub 'Print

End Class 'TestSimpleObject
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
//using System.Runtime.Serialization.Formatters.Binary;

public class Test {
   public static void Main()
  {

      //Creates a new TestSimpleObject object.
      TestSimpleObject obj = new TestSimpleObject();

      Console.WriteLine("Before serialization the object contains: ");
      obj.Print();

      //Opens a file and serializes the object into it in binary format.
      Stream stream = File.Open("data.xml", FileMode.Create);
      SoapFormatter formatter = new SoapFormatter();

      //BinaryFormatter formatter = new BinaryFormatter();

      formatter.Serialize(stream, obj);
      stream.Close();
   
      //Empties obj.
      obj = null;
   
      //Opens file "data.xml" and deserializes the object
 from it.
      stream = File.Open("data.xml", FileMode.Open);
      formatter = new SoapFormatter();

      //formatter = new BinaryFormatter();

      obj = (TestSimpleObject)formatter.Deserialize(stream);
      stream.Close();

      Console.WriteLine("");
      Console.WriteLine("After deserialization the object contains: ");
      obj.Print();
   }
}


// A test object that needs to be serialized.
[Serializable()]        
public class TestSimpleObject  {

    public int member1;
    public string member2;
    public string member3;
    public double member4;
    
    // A field that is not serialized.
    [NonSerialized()] public string member5;
 
    
    public TestSimpleObject() {

        member1 = 11;
        member2 = "hello";
        member3 = "hello";
        member4 = 3.14159265;
        member5 = "hello world!";
    }


    public void Print() {

        Console.WriteLine("member1 = '{0}'", member1);
        Console.WriteLine("member2 = '{0}'", member2);
        Console.WriteLine("member3 = '{0}'", member3);
        Console.WriteLine("member4 = '{0}'", member4);
        Console.WriteLine("member5 = '{0}'", member5);
    }
}
#using <system.dll>
#using <system.messaging.dll>
#using <System.Runtime.Serialization.Formatters.Soap.dll>

using namespace System;
using namespace System::IO;
using namespace System::Runtime::Serialization::Formatters::Soap;

// A test object that needs to be serialized.

[Serializable]
ref class TestSimpleObject
{
private:
   int member1;
   String^ member2;
   String^ member3;
   double member4;

public:

   // A field that is not serialized.

   [NonSerialized]
   String^ member5;
   TestSimpleObject()
   {
      member1 = 11;
      member2 = "hello";
      member3 = "hello";
      member4 = 3.14159265;
      member5 = "hello world!";
   }

   void Print()
   {
      Console::WriteLine( "member1 = ' {0}'", member1 );
      Console::WriteLine( "member2 = ' {0}'", member2 );
      Console::WriteLine( "member3 = ' {0}'", member3 );
      Console::WriteLine( "member4 = ' {0}'", member4 );
      Console::WriteLine( "member5 = ' {0}'", member5 );
   }

};

int main()
{
   
   //Creates a new TestSimpleObject object.
   TestSimpleObject^ obj = gcnew TestSimpleObject;
   Console::WriteLine( "Before serialization the Object* contains: " );
   obj->Print();
   
   //Opens a file and serializes the object into it in binary format.
   Stream^ stream = File::Open( "data.xml", FileMode::Create );
   SoapFormatter^ formatter = gcnew SoapFormatter;
   
   //BinaryFormatter* formatter = new BinaryFormatter();
   formatter->Serialize( stream, obj );
   stream->Close();
   
   //Empties obj.
   obj = nullptr;
   
   //Opens file S"data.xml" and deserializes the object from
 it.
   stream = File::Open( "data.xml", FileMode::Open );
   formatter = gcnew SoapFormatter;
   
   //formatter = new BinaryFormatter();
   obj = dynamic_cast<TestSimpleObject^>(formatter->Deserialize( stream
 ));
   stream->Close();
   Console::WriteLine( "" );
   Console::WriteLine( "After deserialization the object contains: " );
   obj->Print();
}

import System.*;
import System.IO.*;
import System.Runtime.Serialization.*;
import System.Runtime.Serialization.Formatters.Soap.*;
//import System.Runtime.Serialization.Formatters.Binary;

public class Test
{
    public static void main(String[]
 args)
    {        
        //Creates a new TestSimpleObject object.
        TestSimpleObject obj = new TestSimpleObject();
        Console.WriteLine("Before serialization the object contains: ");
        obj.Print();
        //Opens a file and serializes the object into it in binary format.
        Stream stream = File.Open("data.xml", FileMode.Create);
        SoapFormatter formatter = new SoapFormatter();
        //BinaryFormatter formatter = new BinaryFormatter();
        formatter.Serialize(stream, obj);
        stream.Close();
        //Empties obj.
        obj = null;
        //Opens file "data.xml" and deserializes the object
 from it.
        stream = File.Open("data.xml", FileMode.Open);
        formatter = new SoapFormatter();
        //formatter = new BinaryFormatter();
        obj = (TestSimpleObject)(formatter.Deserialize(stream));
        stream.Close();
        Console.WriteLine("");
        Console.WriteLine("After deserialization the object contains: ");
        obj.Print();
    } //main
} //Test

// A test object that needs to be serialized.
/** @attribute Serializable()
 */
public class TestSimpleObject
{
    public int member1;
    public String member2;
    public String member3;
    public double member4;

    // A field that is not serialized.
    /** @attribute NonSerialized()
     */
    public String member5;

    public TestSimpleObject()
    {
        member1 = 11;
        member2 = "hello";
        member3 = "hello";
        member4 = 3.14159265;
        member5 = "hello world!";
    } //TestSimpleObject

    public void Print()
    {
        Console.WriteLine("member1 = '{0}'", (System.Int32)member1);
        Console.WriteLine("member2 = '{0}'", member2);
        Console.WriteLine("member3 = '{0}'", member3);
        Console.WriteLine("member4 = '{0}'", (System.Double)member4);
        Console.WriteLine("member5 = '{0}'", member5);
    } //Print
} //TestSimpleObject
継承階層継承階層
System.Object
   System.Attribute
    System.NonSerializedAttribute
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「NonSerializedAttribute クラス」の関連用語

NonSerializedAttribute クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



NonSerializedAttribute クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS