结构体的可空判断

今日写一个树类型:

 struct PNode<T>
    {
        public T Data;
        public int Pos;
   

        public PNode(T value, int p)
        {
            // TODO: Complete member initialization
            this.Data = value;
            this.Pos = p;
        }
    }

    class PTree<T>
    {
        PNode<T>[] nodes;
        int maxsize;
        int length;
        public PTree(int size)
        {
            maxsize = size;
            nodes = new PNode<T>[size];
            length = 0;
        }

        public int Parent(T t)
        {
            //抛错的代码。
            //值类型不可以为Null
            //PNode<T> result = nodes.ToList().Find(e => e.Data.Equals(t));
            //if (result==null)
            //{
            //    return 0;
            //}
            //return -1;

            //正确的代码
            //值类型判断是否有值的正解
            PNode<T>? result = nodes.ToList().Find(e => e.Data.Equals(t));
            if (result.HasValue)
            {
                return result.Value.Pos;
            }
            return -1;
        }
}

 发现了可空类型的用处。

posted @ 2012-12-06 15:10  viola  阅读(1010)  评论(0)    收藏  举报