我正在使用大约20个变量,它们是在void中创建的。所以我的问题是,我的空白将要完成后,我是否需要处置它们?还是gc会自动执行此操作? 我还应该在空标题或方括号内创建它们吗?
示例:
public static void MainGridControl(
string txtComments = "",
int InventoryItemID = 0,
int Situation = 0,
decimal InventoryRetailPrice = 0,
decimal QuantityValue = 1,
decimal ExtrasPrice = 0,
decimal RealPrice = 0,
decimal DiscountPrice = 0,
string InventoryMainGroupItemCode = "",
string MainGroupItemName = "",
string InventoryMainGroupItemID = "",
string InventoryName = "",
string VatValue = "",
string Code = "",
string Extras = "",
string ExtraItemsNames = "[]",
string ExtrasComments = "",
string Cultery = "",
string InfoText = "",
bool Weight = false,
bool FreePrice = false
)
{
}
示例2
public static void MainGridControl()
{
string txtComments = "";
int InventoryItemID = 0;
int Situation = 0;
decimal InventoryRetailPrice = 0;
decimal QuantityValue = 1;
decimal ExtrasPrice = 0;
decimal RealPrice = 0;
decimal DiscountPrice = 0;
string InventoryMainGroupItemCode = "";
string MainGroupItemName = "";
string InventoryMainGroupItemID = "";
string InventoryName = "";
string VatValue = "";
string Code = "";
string Extras = "",
string ExtraItemsNames = "[]";
string ExtrasComments = "";
string Cultery = "";
string InfoText = "";
bool Weight = false;
bool FreePrice = false;
}
我所有的变量只是字符串,整数,小数和布尔值。 有什么更好的方法可以处理它们?
答案 0 :(得分:0)
在这两种情况下,这些变量都将在方法执行终止时被销毁,因为它们的scope在方法级别。
更进一步,在两个示例中您将做不同的事情。在第一个中,您直接在方法的主体中创建变量,而在第二个中,您将其作为具有默认值的可选参数传递。
这意味着尽管这两种情况都将在方法末尾放置变量,但是您可以在第二种情况下传递其中一些变量的值。
对于您的情况,您正在使用原始类型,因此垃圾收集器销毁它们不会有任何问题。
但是,正如@Sweeper指出的那样,如果您发现自己处于使用实现IDisposable
接口的对象的情况下,则必须先处理它们,然后再通过{{ 1}}方法。否则,您将销毁该对象,但可能会留下未处理的资源,这可能导致内存泄漏。