Shared/Kernelx/Kernelx/Data/Lazy.cs

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

#if NET35

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Kernelx.Data
{
    /// <summary>
    /// 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public class Lazy<T>
    {
        private T _value;

        private readonly Func<T> _valueFactory;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="valueFactory"></param>
        public Lazy(Func<T> valueFactory)
        {
            _valueFactory = valueFactory;
            IsValueCreated = false;
        }

        /// <summary>
        /// 
        /// </summary>
        public bool IsValueCreated { get; private set; }


        /// <summary>
        /// 
        /// </summary>
        public T Value { get 
            {
                if (!IsValueCreated)
                {
                    lock (this)
                        if (!IsValueCreated) 
                        {
                            _value = _valueFactory();
                            IsValueCreated=true;
                        }
                }
                return _value;
            } 
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return Value?.ToString();
后面还有 5 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。