1.ローカル変数
このタイトルを見ると、びっくりするかもしれませんが、これは何ですか?小さな例を見てみましょう:
static void main()
{
int a=10;
MyClass mc=new MyClass();
}
はは、ここでの a と mc はローカル変数で、フィールドと同様にデータを格納します。通常、フィールドにはオブジェクトの状態に関連するデータが保持されますが、ローカル変数の作成はローカルまたは一時的なデータを保持するためによく使用されます。はは、単純ですが、インスタンス フィールドとの違いは何ですか:
インスタンスフィールド
ローカル変数
ライフタイムはインスタンスの作成から始まり、インスタンスがアクセスされなくなるまでです
ブロック内で宣言されてからブロック実行終了まで
暗黙的な初期化はクラスのデフォルト値に初期化されます 暗黙的な初期化はありません。使用前に変数に値が割り当てられていない場合、コンパイラーはエラーを報告します
格納領域 インスタンスフィールドはクラスのメンバーであるため、型参照か参照型かに関係なく、すべてのフィールドがヒープに格納されます 値型:スタックに格納されます
。参照タイプ: 参照はスタックに保存され、データはヒープに保存されます
2.varキーワード
上記のコードに示すように、var が変数の型を自動的に推論できることがわかります。型名が宣言の先頭に指定されている場合、コンパイラーはその型を変数の右側から推論できることがわかります。したがって、表示された型を宣言の先頭に含めます。型名は冗長です。
この冗長性を避けるために、型名が表示される宣言の先頭で新しいキーワード var を使用できます。上記のコードは次のように変更できます:
static void main()
{
var a=10;
var mc=new MyClass();
}
3. 値パラメータ
実パラメータの値を仮パラメータにコピーすることで、値パラメータを使用してメソッドにデータを渡します。メソッドが呼び出されると、システムは次の処理を実行します:
仮パラメータ用にスタック上にスペースを割り当てます
実パラメータの値を仮パラメータにコピーします
4. 参照パラメータ(ref)
仮パラメータ用のスタックにはメモリが割り当てられません
実際の状況は、仮パラメータのパラメータ名が実際のパラメータ変数のエイリアスとして使用され、同じメモリ位置を指すことになります
実パラメータは変数である必要があり、実パラメータとして使用する前に値を割り当てる必要があります。参照型変数の場合は参照またはnullを代入できます
5.出力パラメータ(out)
メソッド内では、出力パラメータを使用する前に値を割り当てる必要があります。これは、パラメーターの初期値は影響を及ぼさないため、メソッド呼び出しの前にパラメーターに値を割り当てる必要がないことを意味します。
メソッドが戻る前に、メソッド内のパスにすべての出力パラメータの値を割り当てる必要があります。
次のコード:
public void Add(out int outValue) { int var1=outValue+2; } メソッドが割り当てられる前に上記のコードの出力パラメータが読み取られた場合、エラーが報告されます。
6. 属性(set、get)
プロパティは関数メンバーです
データストレージ用のメモリは割り当てません
コードを実行できます
set アクセサーには、Value という名前の暗黙的な値パラメーターが 1 つあります。これはプロパティと同じ型で、戻り値の型が void です
get アクセサーにはパラメータがなく、プロパティの型と同じ戻り値の型を持ちます。
7. オブジェクト初期化ステートメント
オブジェクトの作成は new に続いてクラス コンストラクターとそのパラメーター リストで構成されることは誰もが知っています。
オブジェクト初期化ステートメントは作成構文を拡張し、式の最後に一連のメンバー初期化ステートメントを配置します。新しいオブジェクト インスタンスを作成するときにフィールドとプロパティの値を設定できるようにします。
この構文には 2 つの形式があり、1 つはコンストラクターのパラメーター リストを含む形式、もう 1 つは含まない形式です。最初の形式では括弧を省略できることに注意してください。
新しい TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}
新しい TypeName {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}
例は以下の通りです:
public static void main()
{
点 p1=new Point();
点 p2=新しい点{X=4,Y=5,Z=6};
点 p3=新しい点(9){X=7,Y=8};
}
パブリッククラスのポイント
{
public int X=1;
public int Y=2;
public int Z=3;
public Point(int z) { Z=z }
;}
8.このキーワード
このキーワードはクラスで使用され、現在のインスタンスへの参照です。以下のクラスメンバーのコード内でのみ使用できます
インスタンスコンストラクター
インスタンスメソッド
プロパティとインデクサーへのインスタンスアクセス
静的メンバーはインスタンスの一部ではないため、静的関数メンバーのコードで this キーワードを使用することはできません。より適切には、これは次の目的で使用されます:
クラスメンバーとローカル変数またはパラメーターを区別するために使用されます
呼び出しメソッドの実パラメータとして
;