使用泛型类型' System.Collections.Generic.List'需要' 1'类型参数

时间:2014-06-03 18:31:05

标签: c# .net list generics generic-collections

我有一个在c#中创建“Tweeter”应用程序的任务,由于某种原因,我无法让它做最简单的事情,将项目添加到列表并显示它们。

我一直收到错误:

  

使用泛型类型'System.Collections.Generic.List'需要'1'类型的参数

在以下代码行中:

List tweets = new List<Tweet>();

我试过

Tweet tweets = new List<Tweet>();

首先,但它给了我十几个错误。

这是我的Tweet.cs:

namespace Assign3_Twitter
{
    public class Tweet
    {
        public string HashTag { get; private set; }
        public string Message { get; private set; }
        public string Sender { get; private set; }
        public string Recipient { get; private set; }
        public Tweet (string sender, string message, string hashtag, string reciepient)
        {
            this.Sender = sender;
            this.HashTag = hashtag;
            this.Message = message;
            this.Recipient = reciepient;
        }

        public override string ToString ()
        {
            return string.Format ("[Tweet: HashTag={0}, Message={1}, Sender={2}, Recipient={3}]", HashTag, Message, Sender, Recipient);
        }
    }
}

这就是我遇到所有问题的地方:

TweetManager.cs

namespace Assign3_Twitter
{
    public class TweetManager
    {
        private List tweets = new List<Tweet>();

        public TweetManager()
        {
            tweets = new List<Tweet>();

            Tweet tw1 = new Tweet ("Austen", "Hello World!", "#Hey", "Twitter");
            tweets.Add (tw1);

            Tweet tw2 = new Tweet ("Test1", "Hello World! x2", "#Howdy", "Tweeter");
            tweets.Add (tw2);

            Tweet tw3 = new Tweet ("Test2", "Hello World! x3", "#Hey", "Twitter");
            tweets.Add (tw3);

            Tweet tw4 = new Tweet ("Test3", "Hello World! x4", "#Howdy", "Tweeter");
            tweets.Add (tw4);

            Tweet tw5 = new Tweet ("Test4", "Hey there!", "#Hey", "Twitter");
            tweets.Add (tw5);

            Tweet tw6 = new Tweet ("Test5", "Woah this is cool!", "#Howdy", "Tweeter");
            tweets.Add (tw6);
        }

        public void SeeAllTweeters()
        {
            foreach (Tweet Tweets in tweets)
            {
                Console.WriteLine (Tweets);
            }

        }

4 个答案:

答案 0 :(得分:11)

List tweets = new List<Tweet>();

应该是

List<Tweet> tweets = new List<Tweet>();

在第一行中,您尝试将类型列表分配给无类型列表。

此外,作为Kirk points out,只使用var而不是自己声明类型会自动使用您想要的类型:

var tweets = new List<Tweet>();

答案 1 :(得分:1)

正如其他人指出的......你需要将其声明为List<Tweet>或使用varvar将在编译时自动转换为正确的类型。

现在我不确定这是否是一个简单的错误,忘记声明通用或者你认为你只需要声明List

List实际上并不存在。如果您希望使用更通用的东西,可以选择List<T>上具有您想要的功能的任何接口。例如,您可以使用IListIList<T>ICollection等。

new List<Tweet>()设置为上述任何接口也会成功。

http://msdn.microsoft.com/en-us/library/6sh2ey19(v=vs.110).aspx

答案 2 :(得分:0)

你必须这样做

List<Tweet> tweets = new List<Tweet>();

答案 3 :(得分:0)

您需要指定完整类型(包括泛型):

 List<Tweet> tweets = new List<Tweet>();

或使用隐式输入:

 var tweets = new List<Tweet>();