【发布时间】:2013-06-15 06:48:52
【问题描述】:
谁能告诉我接受一个函数的可空参数,然后在使用后将参数设置为空是否是个好主意?这是释放未使用资源的良好编程实践吗?例如:
public static bool SendEmail(MailAddressCollection? To, string Subject, string Body)
{
// use the values stored in To, Subject, and Body to send the message.
To = null;
}
【问题讨论】:
-
1)
string?不是有效类型。 2) GC 会为您处理这些。 -
不用担心,垃圾收集器会处理的。更多关于GC的信息msdn.microsoft.com/en-us/library/system.gc(v=vs.80).aspx
-
我的意思不一定是字符串。我只是用我写的函数作为例子来说明我的意思。
-
我宁愿使用可选参数msdn.microsoft.com/en-us/library/dd264739.aspxSendEmail(string subject="default subject", string body="default body)
-
我刚刚注意到您的示例中的
To必须是Nullable<MailAddressCollection>类型,其中MailAddressCollection必须是struct。所以,To是一个值类型。如果是这样,To不受GC约束,除非您将其装箱。接下来,将null分配给To是不是引用分配,而是默认值Nullable<MailAddressCollection>的分配。因此,您不应该考虑GC,因为To值存在于堆栈中,并在方法结束时立即被销毁(或者如果抖动决定更早)。
标签: c# .net performance garbage-collection