簡體   English   中英

如何為一個類創建具有相同屬性但值與每個對象不同的多個對象

[英]how to create multiple objects with same properties for a class but values are different to each object

protected void page load()
{
    blick=1;
    j=0;
}

protected button1_click()
{
    bclick=blick+1;
    j=j+1;
    ReferenceDetails[]rfobj=new ReferenceDetails[bclick];
    if(j<=bclick)
    {
        rfobj[j]=new ReferenceDetails();
        rfobj[j].name=txtrfname.text;
        rfobj[j].lastname=txtrflastname.text;
    }
}

protected preview button_click()
{
    Response.write(rfobj[1].name); // HOW i should achieve this
    Response.write(rfobj[2].name);
    //object reference is not set to instance of an object
}

我想為具有相同屬性但值不同的相同類創建一個新對象。 在“按鈕”上,首先單擊要創建的具有某些屬性的對象,並根據用戶輸入的值綁定它們。

如果再次單擊該按鈕,則要再次創建一個具有相同屬性但用戶輸入的值不同的新對象,而這些值要與該對應對象綁定。

然后,我想在另一個按鈕中單擊以將其顯示在Gridview上,以獲取每個新生成的對象及其關聯的值。 但是對象在上面的代碼中以rfobj[1], rfobj[2] ,但是當我轉到下一個按鈕並訪問該值時,它們將為null。

我該如何克服? 誰能為我提供解決此問題的方法?

每次單擊按鈕都會重新創建rfobj數組,因此每次它只有最后一個條目時

您需要將其移至表格-類似於“ blick”計數器。

這與良好的編程技術相去甚遠,可能是您內存泄漏。

但是要解決您的問題,問題是:

當您第二次單擊該按鈕時,將重新創建帶有按鈕數量的數組,但是您只填充了最后一個按鈕,因此先前的按鈕將保留為空,因為它是一個新對象。

您必須先備份參考,然后再重新創建,然后用先前創建的對象填充先前的陣列插槽...

像這樣的東西:

形式:

ReferenceDetails[] rfobj;
int bclick = 0;

在按鈕中:

int old_count = bclick;

bclick=blick+1;
//j=j+1;

ReferenceDetails[] old_rfobj = rfobj;
rfobj = new ReferenceDetails[bclick];

for ( int i = 0; i < old_count; i++ ){

    rfobj[i] = old_rfobj[i];
}

if (j<=bclick) {
    //rfobj[j]=new ReferenceDetails(); you dont need this
    rfobj[bclick-1].name=txtrfname.text;
    rfobj[bclick-1].lastname=txtrflastname.text;
}

此句柄為您工作,但是您可以嘗試了解在后台發生的情況,創建和釋放對象時... new單詞向系統請求內存...並且任何時候都必須釋放該內存...

最好的祝福

暫無
暫無

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

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