Ist es teuer, Objekte in .Net zu erstellen?

Ich habe gerade den Code eines Kollegen überarbeitet, der ungefähr so aussah ...

public class Utility
  public void AddHistoryEntry(int userID, HistoryType Historytype, int companyID)
  {
    // Do something...
  }
  public void AddHistoryEntry(int userID, HistoryType historyType, int companyID, string notes)
  {
    // Do something...
  }
}

Um dies ...

public class HistoryEntry
{
  public long UserID { get; private set; }
  public HistoryType HistoryType { get; private set; }
  public long CompanyID { get; set; }
  public string Notes { get; set; }

  public HistoryEntry(long userID, HistoryType historyType)
  {
    this.UserID = userID;
    this.HistoryType = historyType;
  }
}

public class Utility
{
  public void AddHistoryEntry(HistoryEntry entry)
  {
    // Do something...
  }
}

}

Dies ist ein viel besseres Code-Design und ein Liebling von Onkel Bob. Mein Kollege argumentiert jedoch, dass es sehr viel teurer ist, ein Objekt jedes Mal neu zu erstellen, wenn wir diese Methode aufrufen möchten.

Hat er recht

Weitere Erklärung

Vielen Dank für alle bisherigen Antworten. In der Hoffnung auf Kürze habe ich viele Details ausgelassen, aber einige von ihnen haben Probleme mit den Antworten verursacht.

Utility-Klasse existiert nicht. Ich wollte nur die Methoden in eine Klasse einordnen, damit Sie alle sehen können. In Wirklichkeit ist es eine vernünftige Klasse.Der ursprüngliche Code enthielt tatsächlich 5 AddHistoryEntry-Methoden. All dies nahm eine Menge int-Parameter an. Ein Grund für das Refactoring war dasAddHistory(0, 1, 45, 3); sagt dir nicht wirklich viel!AddHistoryEntry wird nicht aus einer engen Schleife aufgerufen, ist jedoch in der gesamten Anwendung weit verbreitet.

Korrekturen

Ich habe jetzt die Codebeispiele aktualisiert, da ich bei einigen Parametern einen Fehler gemacht habe.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage