zoukankan      html  css  js  c++  java
  • 转老赵--不同泛型参数生成的具体类(无论是值类型还是引用类型),它们的静态字段是独立的

    老赵写的文章,原文:http://blog.zhaojie.me/2009/09/i-made-a-mistake-can-you-figure-it-out-answer.html

    public static class MyClass<T>
    {
        public static readonly Guid Key = Guid.NewGuid();
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("int: " + MyClass<int>.Key);
            Console.WriteLine("string: " + MyClass<string>.Key);
    
            Console.ReadLine();
        }
    }

    上面结果是不一样的。。。。。

    在泛型类中定义静态字段的时候一定要注意:不同泛型参数生成的具体类(无论是值类型还是引用类型),它们的静态字段是独立的

    public class StaticTest
        {
            public static void Test()
            {
                Console.WriteLine("int:" + MyClass<int>.key);
                Console.WriteLine("string:" + MyClass<string>.key);
            }
            public static void Test2()
            {
                Console.WriteLine("int:" + MyClass2<int>.time);
                System.Threading.Thread.Sleep(3000);
                Console.WriteLine("string:" + MyClass2<string>.time);
            }
            public static void Test3()
            {
                Console.WriteLine("Test3 execute!");
    
                Console.WriteLine("int:" + MyClass3<int>.time);
                System.Threading.Thread.Sleep(3000);
                Console.WriteLine("string:" + MyClass3<string>.time);
            }
        }
        /// <summary>
        /// 不同泛型参数生成的具体类(无论是值类型还是引用类型),它们的静态字段是独立的
        /// </summary>
        /// <typeparam name="T"></typeparam>
        static class MyClass<T>
        {
            public static readonly Guid key = Guid.NewGuid();
        }
        static class MyClass2<T>
        {
            public static readonly DateTime time = DateTime.Now;
        }
        /// <summary>
        /// 增加一个空的静态构造函数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        static class MyClass3<T>
        {
            public static readonly DateTime time = GetNow();
    
            private static DateTime GetNow()
            {
                Console.WriteLine("GetNow execute!");
                return DateTime.Now;
            }
            static MyClass3() { }
        }
  • 相关阅读:
    C# 动态装载 DLL
    【网摘阅读】舒迅:产品经理必读的九步法
    闲谈造楼与软件测试
    文章阅读
    【原】浅谈测试和产品
    【产品经理】用户体验时代的9条建议
    【产品经理】产品经理的十大顶级错误
    头皮溢脂性皮炎推荐联合治疗:采乐50ml+希尔生100g(请看详情页)维生素B2维生素B6
    月入万元或不需缴税!九张图带你看懂个税新规
    美国比较好的保健品推荐
  • 原文地址:https://www.cnblogs.com/ly7454/p/4588503.html
Copyright © 2011-2022 走看看