C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のQueue.TrimExcess()メソッドをサンプルコードで解説

C#のQueue.TrimExcess()メソッドは、キュー(Queue<T>)内の実際の要素数が現在の容量の90%未満である場合に、容量をその要素数にまで縮小するためのメソッドです。不要なメモリを解放し、メモリ使用量を最適化したい場合に役立ちます。

構文

public void TrimExcess ();

サンプルコード1

以下の例では、整数型のキューに10個の要素を追加した後、Clear()メソッドですべての要素を削除し、TrimExcess()メソッドを呼び出して容量を縮小しています。

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main() {
        Queue<int> queue = new Queue<int>();
        queue.Enqueue(100);
        queue.Enqueue(200);
        queue.Enqueue(300);
        queue.Enqueue(400);
        queue.Enqueue(500);
        queue.Enqueue(600);
        queue.Enqueue(700);
        queue.Enqueue(800);
        queue.Enqueue(900);
        queue.Enqueue(1000);
        Console.WriteLine("キューの内容...");
        foreach(int i in queue) {
            Console.WriteLine(i);
        }
        Console.WriteLine("キュー内の要素数 = "+queue.Count);
        queue.Clear();
        queue.TrimExcess();
        Console.WriteLine("キュー内の要素数 [更新後] = "+queue.Count);
    }
}

出力結果

100
200
300
400
500
600
700
800
900
1000
キュー内の要素数 = 10
キュー内の要素数 [更新後] = 0

サンプルコード2

次の例では、文字列型のキューを使用しています。Contains()メソッドで特定の要素が含まれているかを確認した後、TrimExcess()を呼び出し、さらにClear()で要素をすべて削除しています。

using System;
using System.Collections.Generic;
public class Demo {
    public static void Main() {
        Queue<string> queue = new Queue<string>();
        queue.Enqueue("Gary");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");
        queue.Enqueue("Mark");
        queue.Enqueue("Jack");
        queue.Enqueue("Ryan");
        queue.Enqueue("Kevin");
        Console.Write("要素数 = ");
        Console.WriteLine(queue.Count);
        Console.WriteLine("キューに"Jack"は含まれているか? = "+queue.Contains("Jack"));
        queue.TrimExcess();
        queue.Clear();
        Console.Write("要素数(更新後) = ");
        Console.WriteLine(queue.Count);
    }
}

出力結果

要素数 = 8
キューに"Jack"は含まれているか? = True
要素数(更新後) = 0

ポイントまとめ

  • TrimExcess()は、要素数が現在の容量の90%未満の場合にのみ容量を縮小します。
  • 大量の要素を削除した後など、メモリを効率的に管理したい場面で活用できます。
  • 頻繁に呼び出すと再割り当てのコストが発生するため、必要なタイミングでのみ使用することが推奨されます。
  1. C#のMathF.Exp()メソッドとは?使い方とサンプルコードを解説

    C#のMathF.Exp()メソッドは、自然対数の底 e(約2.71828)を、引数で指定した数値のべき乗にして返すメソッドです。つまり、Exp(x) は「e の x 乗」を計算し、その結果を float型 で返します。構文MathF.Exp()メソッドの構文は以下の通りです。public static float Exp(float val);引数 val には、べき乗の指数となる浮動小数点数(float型)を指定します。主な特徴戻り値は常にfloat型です。計算結果がfloat型の最大値(約3.4×1038)を超える場合は、Infinity(無限大)が返されます。引数に 0 を指定すると、

  2. C#のMathF.Cosh()メソッドとは?構文とサンプルコードで解説

    C#のMathF.Cosh()メソッドは、単精度浮動小数点数(float型)の値に対する双曲線余弦(ハイパボリック・コサイン)を計算し、その結果を返す静的メソッドです。双曲線関数は数学や工学の分野でよく使われる関数の一つです。 構文 MathF.Cosh()メソッドの構文は以下のとおりです。 public static float Cosh (float val); 引数 val には、双曲線余弦を求めたい浮動小数点数(float型)を指定します。戻り値も float 型で返されます。なお、double型を扱いたい場合は Math.Cosh() メソッドを使用してください。MathF.C