C#構造体特性

15803 ワード

構造体の定義:構造体はクラスのように単独で定義もよい.

  
    
class a{};
struct a{};

構造体は、名前の前に制御アクセス子を加えることもできる.

  
    
public struct student{};
internal struct student{};

構造体studentにpubliceまたはinternalの宣言クラスprogramがない場合、student構造を使用してobjオブジェクトを定義できません.構造体studentの要素にpublicの宣言がない場合、オブジェクトobjは要素xを呼び出すことができません.デフォルトの構造体名と要素名は*******クラス型プログラムです.

  
    
using System;
public struct student
{
public int x;
};

class program
{
public static void Main()
{
student obj
= new student();
obj.x
= 100 ;
}

};

構造体では、クラスと同様に静的メンバーを定義することもでき、使用時にクラス名、または構造名でインスタンスに属さない呼び出しを行う必要があり、宣言時に直接定義する.プログラム:

  
    
using System;
public struct student
{
public static int a = 10 ;
};
class exe
{
public static void Main()
{
Console.WriteLine( student.a
= 100 );
}
};

または
コンストラクション関数を定義してメンバーを初期化できますが、デフォルトの非パラメトリックコンストラクション関数とデフォルトの非パラメトリックコンストラクション関数プログラムを書き換えることはできません.

  
    
public struct student
{
public int x;
public int y;
public static int z;
public student( int a, int b, int c)
{
x
= a;
y
= b;
student.z
= c;
}

};

構造体でメンバー関数を定義できます.プログラム:
構造体のオブジェクトはnew演算子を使用して作成(obj)するか、単一の要素割り当て(obj 2)を直接作成することもできます.これはクラスとは異なります.クラスはnewを使用してオブジェクトプログラムを作成するしかないからです.

  
    
public struct student
{
public int x;
public int y;
public static int z;
public student( int a, int b, int c)
{
x
= a;
y
= b;
student.z
= c;
}

};
class program
{
public static void Main()
{
student obj
= new student( 100 , 200 , 300 );
student obj2;
obj2.x
= 100 ;
obj2.y
= 200 ;
student.z
= 300 ;
}
}

クラスオブジェクトと関数を使用する場合、参照伝達が使用されるため、フィールド変更は構造オブジェクトと関数を使用する場合、値伝達が使用されるため、フィールド変更プログラムはありません.
結果:class_wsy obj_1.x=90       struct_wsy obj_2.x=100

  
    
using System;
class class_wsy
{
public int x;
}
struct struct_wsy
{
public int x;
}
class program
{
public static void class_t(class_wsy obj)
{
obj.x
= 90 ;
}
public static void struct_t(struct_wsy obj)
{
obj.x
= 90 ;
}
public static void Main()
{
class_wsy obj_1
= new class_wsy();
struct_wsy obj_2
= new struct_wsy();
obj_1.x
= 100 ;
obj_2.x
= 100 ;
class_t(obj_1);
struct_t(obj_2);
Console.WriteLine(
" class_wsy obj_1.x={0} " ,obj_1.x);
Console.WriteLine(
" struct_wsy obj_2.x={0} " ,obj_2.x);
Console.Read();
}
}

  
    
public struct student
{
public void list()
{
Console.WriteLine(
" " );
}

};

  
    
using System;
class base
{
public struct student
{
public static int a = 10 ;
};
}
class exe
{
public static void Main()
{
Console.WriteLine(
base .student.a = 100 );
}
};