C#のStack.TrimExcess()メソッドをサンプルコードでわかりやすく解説
C#におけるStack<T>.TrimExcess()メソッドは、スタックの容量が閾値(しきい値)を超えている場合に、容量を現在の実際の要素数まで縮小するためのメソッドです。大量の要素を削除した後など、不要になったメモリを解放したい場面で活用できます。
構文
public void TrimExcess();
引数は取らず、戻り値もありません。呼び出すだけで、内部配列の容量が実際の要素数に合わせて調整されます。
使用例1:int型のスタック
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<int> stack = new Stack<int>();
stack.Push(100);
stack.Push(150);
stack.Push(175);
stack.Push(200);
stack.Push(225);
stack.Push(250);
stack.Push(300);
stack.Push(400);
stack.Push(450);
stack.Push(500);
Console.WriteLine("スタック内の要素:");
foreach(var val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("スタックの要素数 = " + stack.Count);
Console.WriteLine("スタックに400は含まれるか? = " + stack.Contains(400));
stack.Clear();
stack.TrimExcess();
Console.WriteLine("スタックの要素数(更新後) = " + stack.Count);
}
}出力結果
スタック内の要素: 500 450 400 300 250 225 200 175 150 100 スタックの要素数 = 10 スタックに400は含まれるか? = True スタックの要素数(更新後) = 0
使用例2:string型のスタック
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<string> stack = new Stack<string>();
stack.Push("A");
stack.Push("B");
stack.Push("C");
stack.Push("D");
stack.Push("E");
stack.Push("F");
stack.Push("G");
stack.Push("H");
Console.WriteLine("要素数 = " + stack.Count);
Console.WriteLine("スタック内の要素...");
foreach (string res in stack) {
Console.WriteLine(res);
}
Console.Write("要素数(更新前) = " + stack.Count);
stack.Clear();
stack.TrimExcess();
Console.WriteLine("スタックの要素数(更新後) = " + stack.Count);
}
}出力結果
要素数 = 8 スタック内の要素... H G F E D C B A 要素数(更新前) = 8 スタックの要素数(更新後) = 0
ポイントまとめ
- TrimExcess()は、Clear()メソッドで全要素を削除した後に呼び出すことで、確保されていたメモリを効率的に解放できます。
- 要素数が閾値(既定では容量の90%)未満の場合のみ容量が縮小されるため、頻繁な再割り当てによるパフォーマンス低下を防ぎます。
- Push()とPop()を繰り返す処理では、毎回TrimExcess()を呼ぶと逆にパフォーマンスが悪化する可能性があるため、使いどころを見極めることが重要です。
-
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 を指定すると、
-
C#のMathF.Ceiling()メソッドの使い方を具体例付きで解説
MathF.Ceiling()メソッドとはC#のMathF.Ceiling()メソッドは、引数として渡されたfloat型の値「以上」である最小の整数値を返すメソッドです。いわゆる「切り上げ」処理を行うためのもので、戻り値の型はfloatです。構文MathF.Ceiling()メソッドの構文は以下のとおりです。public static float Ceiling (float val);引数valには、切り上げたい浮動小数点数(float型)を指定します。使用例1:正の数の場合それでは、MathF.Ceiling()メソッドを使った具体的なサンプルコードを見てみましょう。using Syste