簡體   English   中英

C#中局部變量和字段的數組聲明和數組內存分配的差異

[英]difference in array declaration and array memory allocation for local variables and fields in C#

我有上面列出的問題。 C#中局部變量和字段的數組聲明和數組內存分配的差異

我正在WindowsForm應用程序上工作,但我想聲明一些數組。

公共局部類Form1:Form中 ,我無法單獨聲明數組並單獨進行內存分配( 如果我執行int [] numero = new int [5],則可以 ),但不能分開(分兩步),如下面的代碼所示它不是。

當我將變量numero圈起來時,VS將其標記為字段 我在派生類公共Form1()中做了同樣的事情,它一步一步就可以正常工作(int [] numero = new int [4]),並且可以按照下面的代碼兩步進行。 當我將變量casinumero環繞時 ,它將其標記為局部變量 所以問題是:

為什么字段聲明不能像現場變量那樣一步一步地完成數組聲明和內存分配?

public partial class Form1 : Form
    {
        public int [] numero;
        numero = new int[5];

        public Form1()
       {
            InitializeComponent();
            int[] casinumero;
            casinumero = new int[4];
       }
    }

這是聲明:

public int [] numero;

下面是實例化。 另一種表達方式: 使用變量。 您通過向變量賦值或顯式初始化來使用該變量。

numero = new int[5];

您不能在類級別使用變量。

C#規范:

創建該類的新實例時,該類的實例變量就存在了,

因此,您不能在創建實例之前使用它。

您可以聲明它。 如果不初始化,它將具有默認的初始值。 默認值取決於類型。 對於引用類型,與數組一樣,它將被初始化為null 這稱為定值分配 ,它是C#規則之一。

但是,您可以執行此操作(請注意行內注釋):

public class Example
{
    // Declared here and it will be defaulted to null since we never
    // initialized it explicitly.
    public int[] numero;

    // Or we can initialize it and declare it in one step:
    // public int[] numero = new int[5];

    public Example()
    {
        // Now we are in the constructor, we can use the variable and 
        // explicitly initialize it.
        numero = new int[5];

        int[] casinumero;
        casinumero = new int[4];
    }

    public void SomeMethod()
    {
        // Or we can use it in a method
        numero = new int[5];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM