我是否需要将MyAction设置为null,以便垃圾收集能够继续处理这两个类中的任何一个?
当两个类的生命周期几乎相同时,我就不那么关心了。当Class1的寿命比Class2长得多,或者当Class2的寿命比Class1长得多时,我的问题就更合适了。
这里的代码是精简的。假设Class1和Class2都包含可能影响其生命周期的其他成员和方法。
public class Class1 : IDisposable
{
public Action<string> MyAction { get; set; }
// Is this necessary?
publi
给出下面的代码示例,变量currOn似乎是在循环之外启动的,并且只实例化了一次。例如,假设itemList中有三项,在第二次迭代中,SomeFunctionThatDoesSomeStuff返回true。然后,currOn的值将是true。在第三次迭代中,我认为给定的VB.NET是一种块作用域语言,currOn将被重新实例化并默认为false;然而,我看到它仍然是true,因此不管sOn的值如何,都不会在以后的迭代中得到更新。它看起来像是javascript的函数作用域,其中currOn的声明将被拉到循环之外。有人知道这是怎么回事吗?
For Each item As MyIt
如果我按照rustc告诉我的那样做,下面的错误将消失,并将绑定更改为
where F: Fn() -> () + 'static
pub struct Struct(Box<dyn Fn() -> ()>);
pub fn example<F>(f: F)
where
F: Fn() -> ()
{
Struct(Box::new(|| ())); // ok
Struct(Box::new(f)); // error: The parameter type `F` may not live long eneough
在Rust book ()中,此代码用作示例(转译):
fn main() {
let string1 = String::from("long string is long");
{
let string2 = String::from("xyz");
let result = longest(string1.as_str(), string2.as_str()); // line 5
println!("The longest string is {}", result);