使用泛型类型列表编译错误CS0305
本文关键字:错误 CS0305 编译 列表 泛型类型 | 更新日期: 2023-09-27 18:02:23
当csc /t:library strconcat.cs
和using System.Collections.Generic;
出现错误时
strconcat.cs(9,17): error CS0305: Using the generic type
'System.Collections.Generic.List<T>' requires '1' type arguments
mscorlib.dll: (Location of symbol related to previous error)
.cs代码取自这里:使用公共语言运行时。
我检查了msdn上的描述,但到现在还不能编译
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.IO;
using Microsoft.SqlServer.Server;
[Serializable]
[SqlUserDefinedAggregate(Format.UserDefined, MaxByteSize=8000)]
public struct strconcat : IBinarySerialize{
private List values;
public void Init() {
this.values = new List();
}
public void Accumulate(SqlString value) {
this.values.Add(value.Value);
}
public void Merge(strconcat value) {
this.values.AddRange(value.values.ToArray());
}
public SqlString Terminate() {
return new SqlString(string.Join(", ", this.values.ToArray()));
}
public void Read(BinaryReader r) {
int itemCount = r.ReadInt32();
this.values = new List(itemCount);
for (int i = 0; i <= itemCount - 1; i++) {
this.values.Add(r.ReadString());
}
}
public void Write(BinaryWriter w) {
w.Write(this.values.Count);
foreach (string s in this.values) {
w.Write(s);
}
}
}
我正在运行Windows 7 x64与c:'Windows'Microsoft.NET'Framework'v2.0.50727
以及c:'Windows'Microsoft.NET'Framework64'v2.0.50727>
如何编译?对不起,我刚开始学习c# -我在SO上搜索了一些其他问题,这些建议并没有给我带来进展(
对应CS0305的文章中解释的错误-类型参数数量不匹配。
在您的情况下,您调用new List()
与零类型参数,而期望有一个:new List<string>()
和相应的字段定义private List<string> values;
。
注意:如果你因为一些奇怪的原因想要非泛型版本对应的类命名为ArrayList
,但泛型List<T>
更容易和更安全的使用。
问题如上所述,您没有指定要在列表中存储的类型。将这部分修改如下
private List<string> values;
public void Init()
{
this.values = new List<string>();
}
c#中的泛型需要指定它们使用的类型来代替<T>
。
System.Collections.Generic。List需要一个类型参数,在本例中似乎是SqlString,所以像这样更改代码的以下部分:
private List<SqlString> values;
public void Init() {
this.values = new List<SqlString>();
}