Mã hóa
Đối với thực hành mã hóa, tùy chọn thứ hai tốt hơn, nơi đối tượng được lưu trữ trong biến trước tiên. Lý do làm cho nó tốt hơn là bạn có thể đặt tên đối tượng theo ngữ cảnh mà nó được sử dụng. Ví dụ:
var pendingUserForRegistration = new User();
Performance
Đối với hiệu suất, tùy chọn đầu tiên có thể tốt hơn một chút, vì nó sử dụng các đối tượng trực tiếp từ ngăn xếp và bỏ qua việc lưu trữ các đối tượng trong một biến địa phương .Nó có thể được nhìn thấy từ IL của phương pháp:
IL của đầu tiên:
.maxstack 8
L_0000: nop
L_0001: newobj instance void NS.ClassA::.ctor()
L_0006: call instance void MS.ClassA::M()
L_000b: nop
L_000c: ret
IL của thứ hai:
.maxstack 1
.locals init (
[0] class NS.ClassA c)
L_0000: nop
L_0001: newobj instance void NS.ClassA::.ctor()
L_0006: stloc.0
L_0007: ldloc.0
L_0008: callvirt instance void NS.ClassA::M()
L_000d: nop
L_000e: ret
này thường là một buổi biểu diễn trên không nhỏ, đó là khó tìm ra một trường hợp nó sẽ giải quyết một vấn đề hiệu năng thực sự.
Tóm lại
Kể từ khi bảo trì của tăng mã ở đây là lớn hơn so với hiệu suất đạt được nó ưa thích để lưu trữ các đối tượng trong một biến với tên có ý nghĩa.
Lớp học có tạo bất kỳ tài nguyên không được quản lý nào hoặc triển khai IDisposable không? – SwDevMan81