4

私は現在 C# プロジェクトに取り組んでおり、カスタム List 配列にデータを追加する必要があります。その後、リストを列挙して特定のレコードを見つけ、データを変更する必要があります。ただし、Visual Studio 内でエラーが発生します

Cannot modify the return value of System.Collections.Generic.List<EmailServer.ThreadCheck>.this[int] because it is not a variable. 

以下は、リスト配列を初期化するコードです

static List<ThreadCheck> threadKick = new List<ThreadCheck>();

以下は、リスト配列にデータを追加する方法です

public static void addThread(ILibraryInterface library, int threadID, string threadName)
{
    if (Watchdog.library == null)
    {
        Watchdog.library = library;
    }
    long currentEpochTime = library.convertDateTimeToEpoch(DateTime.Now);
    threadKick.Add(new ThreadCheck()
    {
        threadName = threadName,
        threadID = threadID,
        epochTimeStamp = currentEpochTime
    });
    library.logging(classDetails + MethodInfo.GetCurrentMethod().Name, string.Format("Thread ID: {0} has been added to watchdog for {1}",
        threadID, threadName));
}

以下は、リスト内のデータを変更しようとしているコードです

public static void kickThread(int threadId)
{
    lock (threadKick)
    {
        for (int i = 0; i < threadKick.Count; i++)
        {
            if (threadKick[i].threadID == threadId)
            {
                threadKick[i].epochTimeStamp = library.convertDateTimeToEpoch(DateTime.Now);
                break;
            }
        }
    }
}

上記のエラーを発生させずにリスト配列の内容を変更するにはどうすればよいですか?

4

1 に答える 1

9

邪悪な可変構造体の素晴らしい世界へようこそ!

a に変更ThreadCheckするclassと、すべて正常に動作します。

于 2012-12-10T22:57:20.997 に答える