2013-03-06 6 views
1

Хотя csc /t:library strconcat.cs с using System.Collections.Generic; я получаю сообщение об ошибкекомпиляции CS0305 ошибок Использование универсального типа списка

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 берется из here: Использование Common Language Runtime.
Я проверил description на 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, и эти советы не сделать прогресс для меня (

ответ

1

Ошибка объясняется в статье corresponsding к CS0305. - число параметров типа не совпадают

В вашем случае вы называете new List() с параметрами нулевого типа, когда один, как ожидается, как:. new List<string>() и соответствующее поле определения private List<string> values;

Примечания: если вы по какой-то странной причине хотите необщего версии соответствующего класса с именем ArrayList, но generic List<T> проще и безопаснее использовать.

1

Проблема такая, как указано, вы не указали тип, который вы храните в списке. Измените этот раздел следующим образом

private List<string> values; 

public void Init() 
{ 
    this.values = new List<string>(); 
} 

Родовых типов в C# требуют того типа, который они используют, чтобы быть указаны вместо <T>.

0

System.Collections.Generic.List требует один аргумент типа, в данном случае это, кажется, SqlString, поэтому измените следующую часть кода, как это:

 private List<SqlString> values; 

     public void Init() { 
      this.values = new List<SqlString>(); 
     } 
+0

Список хранящей 'string' не 'SqlString'. –

Смежные вопросы