C# 如何为一个类创建具有相同属性但每个对象的值不同的多个对象 受保护的无效页面加载() { blick=1; j=0; } 受保护的按钮1\u单击() { bclick=blick+1; j=j+1; ReferenceDetails[]rfobj=新的ReferenceDetails[bclick]; 如果(j

C# 如何为一个类创建具有相同属性但每个对象的值不同的多个对象 受保护的无效页面加载() { blick=1; j=0; } 受保护的按钮1\u单击() { bclick=blick+1; j=j+1; ReferenceDetails[]rfobj=新的ReferenceDetails[bclick]; 如果(j,c#,C#,rfobj数组在每次单击按钮时都是新创建的,那么每次它都只有最后一个条目 您需要将其移动到表单中,就像“blick”计数器一样。每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中 您需要将其移动到表单中,就像“blick”计数器一样。每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中 您需要将其移动到表单中,就像“blick”计数器一样。每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中 您需要将它移动到表单中,就像“

rfobj数组在每次单击按钮时都是新创建的,那么每次它都只有最后一个条目


您需要将其移动到表单中,就像“blick”计数器一样。

每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中


您需要将其移动到表单中,就像“blick”计数器一样。

每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中


您需要将其移动到表单中,就像“blick”计数器一样。

每次单击按钮时,都会重新创建rfobj数组,因此每次都只有最后一个条目在其中


您需要将它移动到表单中,就像“blick”计数器一样。

这离良好的编程技术很远,可能是内存泄漏

但要解决你的问题,问题是:

当您第二次单击按钮时,将使用按钮数重新创建数组,但您仅填充最后一个按钮,之前的按钮将保留为空,因为它是一个新对象

您必须在重新创建之前备份引用,然后用以前创建的对象填充以前的阵列插槽

大概是这样的:

形式如下:

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
}
在按钮中:

ReferenceDetails[] rfobj;
int bclick = 0;
int old\u count=b单击;
bclick=blick+1;
//j=j+1;
参考细节[]旧的\u rfobj=rfobj;
rfobj=新的参考细节[bclick];
对于(int i=0;i如果(j这与良好的编程技术相去甚远,可能是内存泄漏

但要解决你的问题,问题是:

当您第二次单击按钮时,将使用按钮数重新创建数组,但您仅填充最后一个按钮,之前的按钮将保留为空,因为它是一个新对象

您必须在重新创建之前备份引用,然后用以前创建的对象填充以前的阵列插槽

大概是这样的:

形式如下:

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
}
在按钮中:

ReferenceDetails[] rfobj;
int bclick = 0;
int old\u count=b单击;
bclick=blick+1;
//j=j+1;
参考细节[]旧的\u rfobj=rfobj;
rfobj=新的参考细节[bclick];
对于(int i=0;i如果(j这与良好的编程技术相去甚远,可能是内存泄漏

但要解决你的问题,问题是:

当您第二次单击按钮时,将使用按钮数重新创建数组,但您仅填充最后一个按钮,之前的按钮将保留为空,因为它是一个新对象

您必须在重新创建之前备份引用,然后用以前创建的对象填充以前的阵列插槽

大概是这样的:

形式如下:

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
}
在按钮中:

ReferenceDetails[] rfobj;
int bclick = 0;
int old\u count=b单击;
bclick=blick+1;
//j=j+1;
参考细节[]旧的\u rfobj=rfobj;
rfobj=新的参考细节[bclick];
对于(int i=0;i如果(j这与良好的编程技术相去甚远,可能是内存泄漏

但要解决你的问题,问题是:

当您第二次单击按钮时,将使用按钮数重新创建数组,但您仅填充最后一个按钮,之前的按钮将保留为空,因为它是一个新对象

您必须在重新创建之前备份引用,然后用以前创建的对象填充以前的阵列插槽

大概是这样的:

形式如下:

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
}
在按钮中:

ReferenceDetails[] rfobj;
int bclick = 0;
int old\u count=b单击;
bclick=blick+1;
//j=j+1;
参考细节[]旧的\u rfobj=rfobj;
rfobj=新的参考细节[bclick];
对于(int i=0;i如果(jif button1_uu单击一次,我想创建一个具有用户动态输入的某些属性和关联值的对象。我想将这些动态值绑定到所创建的对象。然后,如果再次单击相同的按钮1,我将返回到我的用户屏幕,这是第二次使用相同属性和新属性创建另一个新对象这样的值会一直持续到按钮不被单击为止。然后在另一次预览单击时,我想访问所有对象及其在按钮1单击时创建的数据。我知道您想做什么,并且我解释了代码不起作用的原因。如果按钮1单击一个,您需要在页面加载函数中声明rjobj,而不是在单击函数中声明rjobj当我想创建一个具有用户动态输入的某些属性和关联值的对象时。我想将这些属性和关联值动态绑定到所创建的对象。然后,如果再次单击相同的按钮1,我将返回到我的用户屏幕,这是第二次另一个新对象想要创建具有相同属性和新值的对象,如它所继续的直到该按钮不被单击为止。然后在另一次预览单击时,我想访问所有对象及其在按钮1单击时创建的数据。我知道您想做什么,并解释了代码不起作用的原因。如果要创建按钮1,您需要在页面加载函数中声明rjobj,而不是在单击函数中声明rjobj具有用户动态输入的某些属性和关联值的对象。我希望将这些属性和关联值动态绑定到创建的对象。然后,如果再次单击同一按钮1,我将返回到我的用户屏幕,这是第二次另一个新对象希望创建具有相同属性和新值的对象,它将继续,直到该按钮不会单击。然后在另一次预览单击时,我想访问所有对象及其在按钮1单击时创建的数据。我知道您想做什么,并解释了代码不起作用的原因。您需要在页面加载函数中声明rjobj,而不是在单击函数中声明rjobj