如何避免c#中的公共变量重复

时间:2014-09-08 11:49:35

标签: c# global-variables duplicate-removal

我有公共变量:

public static List<CompanyModel1> companies1 = new List<CompanyModel1>();
public List<URL> urls = new List<URL>();

我在函数调用期间为此变量添加了更多值

public void DataBind_Results()
{
    ..companies1.AddRange(listToAdd.OrderByDescending(c => c.compnMastery1));
}

urls.Add(new URL
     {
         Link = listToAdd.First().compnId1.ToString(),
                          Title = arrProcess[ar]
     });

但我的代码总是运行两次(我看到当我使用debug时),我认为原因是它总是有页面重新加载。 然后我的变量将复制其值,当我显示数据时,我看到它是重复的。如何避免呢?

4 个答案:

答案 0 :(得分:2)

我假设您正在使用asp.net或其他东西。在

中包装“添加”功能
if(!Page.IsPostBack) {
    //Your add code
}

答案 1 :(得分:1)

理想情况下,找出您的网页加载两次然后修复的原因。

然后添加代码以检查列表是否在每个数据绑定开始时填充,然后重新填充。

答案 2 :(得分:0)

您希望变量填充OnLoad,所以请执行以下操作:

声明你的变量:

public static List<CompanyModel1> companies1;
public List<URL> urls;

在页面加载时填充它们。但如果你正在做回发,那就不行了。

    protected override void OnLoad(EventArgs e)
    {
        if(!IsPostBack)
        {
            companies1 = new List<CompanyModel1>();
            urls = new List<URL>();
        }
    }

答案 3 :(得分:0)

您的代码正在运行两次,这意味着,一次调用该函数时,再次回发页面时。 将您的代码放入

if(!IsPostBack)
{
 here.....
 }