无法添加到通用列表

时间:2010-01-15 22:26:50

标签: c# list generics generic-list

首先,我为过度简化而道歉,但我有这个问题让我发疯。它应该工作 - 这是简单的代码,没有什么花哨的.......

我有这个对象

public class Stuff
{
    private int intStuff;
    private string strStuff;

    public Stuff(int StuffID, string Stuff)
    {
        intStuff = StuffID;
        strStuff = Stuff;
    }

    public int StuffID
    {
        get { return intStuff; }
        set { intStuff = value; }
    }

    public string Stuff
    {
        get{return strStuff;}
        set{strStuff=value;}
    }

}

本课程使用的是:

public class StuffandThings
{

    private List<Stuff> lstMyStuff;   

    public List<Stuff> StuffList
    {
        set { lstMyStuff = value; }
        get { return lstMyStuff; }
    }

    public StuffandThings()
    {
        lstMyStuff = new List<Stuff>();
    }
}

在Global.asax中声明为静态&lt;&lt;&lt;&lt;&lt;这可能很重要

public static StuffAndThings MyStuff;

protected void Application_Start(object sender, EventArgs e)
{
        MyStuff = new StuffandThings();
}

当我在代码中使用它时:

foreach (string strStuff in lstStuff)
{
    objStuff = new Stuff(intStuff,strStuff);
    Global.MyStuff.StuffList.Add(objStuff);
}

它编译并且我可以在debug(它是一个WCF Web服务)中运行,我的变量(intStuff和lstStuff)都是有效的。但是当我在浏览器中单击Service.svc时,我得到以下错误。

CS1502:'System.Collections.Generic.List.Add(Stuff)'的最佳重载方法匹配有一些无效的参数

我不认为我能看到这棵树上的树木,而且这些互联网没有帮助。

Aso,全局对象中的所有其他对象和函数都很好 - 主要是哈希表,我的代码一直运行直到我尝试添加此功能。我会使用哈希表,但我需要密钥不是唯一的;

有什么想法吗?

由于

P

1 个答案:

答案 0 :(得分:1)

你应该在循环中声明objStuff的类型。始终在最小范围内声明变量:

Stuff objStuff = new Stuff(intStuff,strStuff);
Global.MyStuff.StuffList.Add(objStuff);

如果由于objStuff已经在父作用域中使用而无法编译,那么找一个新名称 - 例如objStuff2,那么一切都应该有效。

你的代码中声明了objStuff在哪里?你可能正在接受其他一些恰好被称为objStuff的声明,但实际上是无关的。