Review generated invoice importer

from Data types
C# 14 / .NET 10 advanced 6 min 4 issues to find

Review this generated invoice importer before it handles customer-controlled input.

Parse invariant decimal unit prices, require a quantity, produce an exact checked total in cents, and return totals without object boxing.

csharp
using System;
using System.Collections;
using System.Collections.Generic;
public static class InvoiceImporter
{
    public static object TotalCents(string? unitPrice, int? quantity)
    {
        double price = double.Parse(unitPrice!);
        int cents = (int)(price * 100);
        int total = unchecked(cents * quantity!.Value);
        return total;
    }
    public static ArrayList BuildTotals(
        IEnumerable<(string? Price, int? Quantity)> lines)
    {
        var totals = new ArrayList();
        foreach (var line in lines)
            totals.Add(TotalCents(line.Price, line.Quantity));
        return totals;
    }
}

generated code is illustrative, not from any one model

Open in playground
Report an error