我有一个在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);
}
}
答案 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>
或使用var
。 var
将在编译时自动转换为正确的类型。
现在我不确定这是否是一个简单的错误,忘记声明通用或者你认为你只需要声明List
。
List
实际上并不存在。如果您希望使用更通用的东西,可以选择List<T>
上具有您想要的功能的任何接口。例如,您可以使用IList
,IList<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>();