改善C#程序的157个建议——建议33学习笔记:避免在泛型类型中声明静态成员

举报
AI浩 发表于 2021/12/23 00:53:36 2021/12/23
【摘要】 首先查看下面的代码:   public class MyList<T>     {         public static int Count { get; set; }         public MyLi...

首先查看下面的代码:

  public class MyList<T>
    {
        public static int Count { get; set; }
        public MyList()
        {
            Count++;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyList<int> list1 = new MyList<int>();
            MyList<int> list2 = new MyList<int>();
            MyList<string> list3 = new MyList<string>();
            Console.WriteLine(MyList<int>.Count);
            Console.WriteLine(MyList<string>.Count);
            Console.ReadKey();
        }
    }

输出的结果:

2

1

从输出结果可以看出来,不同的数据类型,他们之间的静态成员是不共享的,同一数据类型之间可以共享静态成员。但是非泛型类型中的泛型方法并不会再运行时的本地代码中生成不同的类型。例:

  public class MyList
    {
        public static int Count { get; set; }  
        public static int Func<T>()       
         {
            return Count++;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine(MyList.Func<int>());
            Console.WriteLine(MyList.Func<int>());
            Console.WriteLine(MyList.Func<string>());
            Console.ReadKey();
        }
    }

输出结果:

0

1

2

文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。

原文链接:wanghao.blog.csdn.net/article/details/106662269

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。