2

エラーが発生し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で他の質問をいくつか検索しましたが、それらのアドバイスは私にとって進歩しませんでした(

4

3 に答える 3

1

問題は前述のとおりです。リストに格納しているタイプを指定していません。このセクションを次のように変更します

private List<string> values;

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

C# のジェネリック型では、使用する型を の代わりに指定する必要があります<T>

于 2013-03-06T08:30:27.730 に答える
1

CS0305に対応する記事で説明されているエラー- 型パラメーターの数が一致しません。

あなたの場合、次のようnew List()にタイプパラメータが予想される場合はゼロタイプパラメータで呼び出します:new List<string>()および対応するフィールド定義private List<string> values;

注: なんらかの理由で非ジェネリック バージョンが必要な場合は、対応するクラスの名前ArrayListを付けますが、ジェネリックList<T>の方が簡単で安全に使用できます。

于 2013-03-06T08:29:44.990 に答える
0

System.Collections.Generic.List には 1 つの型引数が必要です。この場合は SqlString のように見えるため、コードの次の部分を次のように変更します。

        private List<SqlString> values;

        public void Init()    {
            this.values = new List<SqlString>();
        }
于 2013-03-06T08:30:35.797 に答える