gpt4 book ai didi

C#——如果一个对象在以下范围内没有用,我应该将它设为 NULL 吗?

转载 作者:行者123 更新时间:2023-11-30 18:51:59 25 4
gpt4 key购买 nike

鉴于以下问题,我正在询问“C# 最佳实践”。

    File.WriteAllText("YourXaml.xaml", txtXamlData.Text);

Window myWindow = null;
try
{
using (Stream sr = File.Open("YourXaml.xaml", FileMode.Open))
{
myWindow = (Window)XamlReader.Load(sr);
myWindow.ShowDialog();
myWindow.Close();
myWindow = null; // **should we do this?**
}
}
catch (System.Exception ex)
{
}

谢谢

最佳答案

不,不要这样做。它只是杂乱无章,在任何方面、形状或形式上都无济于事1。垃圾收集器足够聪明,可以判断变量最后一次在程序代码中读取的时间,并且无论如何都会允许它被垃圾收集。我假设您在代码的其他地方引用myWindow

不过,我个人会重写该代码以稍后声明 myWindow:

File.WriteAllText("YourXaml.xaml", txtXamlData.Text);

try
{
using (Stream sr = File.Open("YourXaml.xaml", FileMode.Open))
{
Window myWindow = (Window)XamlReader.Load(sr);
myWindow.ShowDialog();
}
}
catch (Exception ex)
{
...
}

请注意,我最初在这里有一个 using 语句来处理 myWindow...但是 Window 似乎没有实现 ID 一次性。我怀疑您是否需要在 ShowDialog() 返回后调用 Close() - 它肯定会阻塞,直到窗口 关闭。


1 好的,如果您正在调试并且正在单步执行,并且已经到达该行之后的某个点,它将允许更早的垃圾收集。不过在 Release模式下它毫无意义。

关于C#——如果一个对象在以下范围内没有用,我应该将它设为 NULL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6129595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com