[英]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.