• Using .NET 4's Lazy<T> 实现单实例


    Using .NET 4's Lazy<T> type
     
    Explanation of the following code:

    1. If you're using .NET 4 (or higher) then you can use the System.Lazy<T> type to make the laziness really simple.
    2. All you need to do is pass a delegate to the constructor that calls the Singleton constructor, which is done most easily with a lambda expression.
    3. It also allows you to check whether or not the instance has been created with the IsValueCreated property.

    public sealed class Singleton

    {

        private Singleton()

        {

        }

        private static readonly Lazy<Singleton> lazy = new Lazy<Singleton>(() => new Singleton());

        public static Singleton Instance

        {

            get

            {

                return lazy.Value;

            }

        }

    }
     

    Example:
     
    The final example is here:

    namespace Singleton

    {

        class Program

        {

            static void Main(string[] args)

            {

                Calculate.Instance.ValueOne = 10.5;

                Calculate.Instance.ValueTwo = 5.5;

                Console.WriteLine("Addition : " + Calculate.Instance.Addition());

                Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());

                Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());

                Console.WriteLine("Division : " + Calculate.Instance.Division());

                Console.WriteLine(" ---------------------- ");

                Calculate.Instance.ValueTwo = 10.5;

                Console.WriteLine("Addition : " + Calculate.Instance.Addition());

                Console.WriteLine("Subtraction : " + Calculate.Instance.Subtraction());

                Console.WriteLine("Multiplication : " + Calculate.Instance.Multiplication());

                Console.WriteLine("Division : " + Calculate.Instance.Division());

                Console.ReadLine();

            }

        }

        public sealed class Calculate

        {

            private Calculate()

            {

            }

            private static Calculate instance = null;

            public static Calculate Instance

            {

                get

                {

                    if (instance == null)

                    {

                        instance = new Calculate();

                    }

                    return instance;

                }

            }

            public double ValueOne { get; set; }

            public double ValueTwo { get; set; }

            public double Addition()

            {

                return ValueOne + ValueTwo;

            }

            public double Subtraction()

            {

                return ValueOne - ValueTwo;

            }

            public double Multiplication()

            {

                return ValueOne * ValueTwo;

            }

            public double Division()

            {

                return ValueOne / ValueTwo;

            }

        }

    }

  • 相关阅读:
    EFCore 中执行存储过程返回DataSet DataTable
    继 首次使用DoNetCore EFCore DbFirst 更新数据实体
    在DoNetCore MVC 中如何使用AutoMapper
    一款新的好用的SSH工具——FinalShell
    常用转义字符统计
    在MyEclipse安装Spket插件,用于jQuery代码提示
    Java连接Oracle数据库常用方法
    Java注解
    Eclipse怎样对项目进行重命名?
    Web Api试图加载格式不正确的程序,解决方法
  • 原文地址:https://www.cnblogs.com/zeroone/p/3618634.html
Copyright © 2020-2023  润新知