Czy tworzenie obiektów w .Net jest kosztowne?

Właśnie odnowiłem kod kolegi, który z grubsza wyglądał tak ...

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...
  }
}

Do tego...

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...
  }
}

}

Teraz jest to znacznie lepszy projekt kodu i ulubiony wujek Bob. Jednakże mój kolega twierdzi, że znacznie droższe jest tworzenie obiektu za każdym razem, gdy chcemy wywołać tę metodę.

Czy on ma rację?

Dalsze wyjaśnienia

Dziękuję za wszystkie dotychczasowe odpowiedzi. Pozostawiłem wiele szczegółów w nadziei na zwięzłość, ale niektóre z nich spowodowały problemy z odpowiedziami.

Klasa narzędziowa nie istnieje. Chciałem po prostu zaprezentować te metody w klasie. W rzeczywistości jest to klasa rozsądna.W oryginalnym kodzie istniało 5 metod AddHistoryEntry. Wszystko to wymagało wielu parametrów int. Jednym z powodów refaktoryzacji było toAddHistory(0, 1, 45, 3); tak naprawdę niewiele ci mówi!AddHistoryEntry nie jest wywoływany z wąskiej pętli, ale jest powszechnie używany w całej aplikacji.

Korekty

Zaktualizowałem już przykłady kodu, ponieważ popełniłem błąd przy niektórych parametrach.

questionAnswers(9)

yourAnswerToTheQuestion