Day-5弱引用WeakReference,StringBuilder,格式控制

1.WeakReference
对一个大的对象,不再引用,以后有可能还要使用,则建立弱引用,如果对象未被GC,则可以直接使用,节省创建时间(一般用不到)

 class Program
    {
        static void Main(string[] args)
        {
            Person  p = new Person(){
                Name = "Kobe",
                Gender  = "Male",
                Age = 36
            };
            WeakReference wr = new WeakReference(p);//创建若引用
            p = null;            
            Console.WriteLine("p=null");
            Console.WriteLine(wr.IsAlive);//判断弱引用对象是否还活着  
            object o = wr.Target;//获取引用对象的目标,其类型为object
            if(o  != null)
            {
                Person p1 = o as Person;
                Console.WriteLine(p1.Name );
            }          
        }
    }
    public class Person
    {
        public string Name { get; set; }
        public string Gender { get; set; }
        public  int  Age { get; set; }
    }

2.StringBuilder
用于字符串的连接,处理速度很快

static void Main(string[] args)
        {
        //普通的字符串连接
            //string[] lines = File.ReadAllLines("test.txt",Encoding.Default);
            //string msg = string.Empty;
            //Stopwatch  sw = new Stopwatch();
            //sw.Start();
            //for (int i = 0; i < lines.Length ; i++)
            //{
            //    msg = msg + lines[i];
            //}
            //sw.Stop();
            //Console.WriteLine(sw.Elapsed );//运行程序所用时间
            string[] lines = File.ReadAllLines("test.txt", Encoding.Default);//读取文件路径
            StringBuilder sb = new StringBuilder();
            Stopwatch sw = new Stopwatch();//跑表
            sw.Start();
            for (int i = 0; i < lines.Length; i++)
            {
                sb.Append(lines[i]);
            }
            sw.Stop();
            Console.WriteLine(sw.Elapsed );//运行程序所用时间
            Console.ReadKey();
        }

3.格式控制


            //有关数字格式化隐性使用IFomatProvider的例子
#if true
            //货币
            Console.WriteLine(string.Format("显示货币格式{0:c3}",12));//¥12.000
            //十进制
            Console.WriteLine("显示货币十进制格式{0:d10}", 12);//0000000012
            //科学计数法
            Console.WriteLine("科学计数法{0:e5}",12);//1.20000e+001
            //固定点格式
            Console.WriteLine("固定点格式 {0:f10}",12);//12.0000000000
            //常规格式
            Console.WriteLine("常规格式{0:g10}",12);//12
            //数字格式(用分号隔开)
            Console.WriteLine("数字格式 {0:n5}:",666666666);//666,666,666.00000
            //百分号格式
            Console.WriteLine("百分号格式(不保留小数){0:p0}",0.55);//%55
            //16进制
            Console.WriteLine("16进制{0:x0}", 12);//c
           // 0定位器  此示例保留5位小数,如果小数部分小于5位,用0填充
            Console.WriteLine("0定位器{0:000.00000}",1222.133);//1222.13300
            //数字定位器
            Console.WriteLine("数字定位器{0:(#).###}", 0200.0233000);//(200).023
             //小数
            Console.WriteLine("小数保留一位{0:0.0}", 12.222);//12.2
            //百分号的另一种写法,注意小数的四舍五入
            Console.WriteLine("百分号的另一种写法,注意小数的四舍五入{0:0%.00}", 0.12345);//12%.34
            Console.WriteLine("\n\n");

你可能感兴趣的:(C#学习)