How to check whether an F# function/method has been initialized

  Sometimes, we may run into this kind of situation that  we want to check if the given method/function has been initialized. We all know this is fairly easy in C#, since we can use delegate to invoke the function , then verify if the value of delegate is null. But in F# , delegate is rarely needed because F# can treat a function as a value, without the need for any wrapper. So , here is an easy way to solve this problem.

  Here is what we do in C# side:

public class Class1
    {
        public delegate void CancelHandler(Object sender);
        public CancelHandler onCancel;
 
        public void Verify()
        {
            if (onCancel == null)
            {
                //do something;
            } 
        } 
    }
		

  Usually, the null keyword is converted to opetion type in F#, but in this situation, we should take the judgement as this:

type public Class1() =
    [<DefaultValue>]
    val mutable public onCancel : System.Object -> unit
 
    member public this.Verify() = 
        if box(this.onCancel) = null then
            ()//do something

 

  Enjoying:)

 

posted @ 2012-11-07 14:30  ZackZhou  阅读(180)  评论(0编辑  收藏  举报