diff --git a/QRCoder/QRCodeGenerator.ModulePlacer.cs b/QRCoder/QRCodeGenerator.ModulePlacer.cs
index 35eba79b..d5fe88d9 100644
--- a/QRCoder/QRCodeGenerator.ModulePlacer.cs
+++ b/QRCoder/QRCodeGenerator.ModulePlacer.cs
@@ -107,8 +107,8 @@ public static void PlaceFormat(QRCodeData qrCode, BitArray formatStr, bool offse
/// The index of the selected mask pattern.
public static int MaskCode(QRCodeData qrCode, int version, BlockedModules blockedModules, ECCLevel eccLevel)
{
- int? selectedPattern = null;
- var patternScore = 0;
+ int selectedPattern = -1; // no pattern selected yet
+ var patternScore = int.MaxValue; // lower score is better
var size = qrCode.ModuleMatrix.Count - 8;
@@ -165,7 +165,7 @@ public static int MaskCode(QRCodeData qrCode, int version, BlockedModules blocke
var score = MaskPattern.Score(qrTemp);
// Select the pattern with the lowest score, indicating better QR code readability.
- if (!selectedPattern.HasValue || patternScore > score)
+ if (patternScore > score)
{
selectedPattern = maskPattern;
patternScore = score;
@@ -173,7 +173,7 @@ public static int MaskCode(QRCodeData qrCode, int version, BlockedModules blocke
}
// Apply the best mask pattern to the actual QR code.
- var selectedPatternFunc = MaskPattern.Patterns[selectedPattern.Value];
+ var selectedPatternFunc = MaskPattern.Patterns[selectedPattern];
for (var x = 0; x < size; x++)
{
for (var y = 0; y < x; y++)
@@ -191,7 +191,7 @@ public static int MaskCode(QRCodeData qrCode, int version, BlockedModules blocke
}
}
- return selectedPattern.Value;
+ return selectedPattern;
}
///