C# 委托事件 和简单的代码书写优化

public class Example
    {
        public delegate string DoSth(string str);//定义委托
        internal string Go()
        {
            //声明一个委托变量,并把已知方法作为其构造函数的参数
            DoSth d = new DoSth(Print);
            string str = "Hello,World";
            //通过委托的静态方法Invoke触发委托
            return d.Invoke(str);
        }
        string Print(string str)
        {
            return "委托";
        }
    }			

String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间而StringBuilder 在不敢变引用地址的情况下进行修改并且效率较高,如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类
字符串在多次相加的时候会造成不必要的占用空间,尤其是在循环的时候。
string.foamt()方法也是使用了StringBuilder 类。效率等同

避免不必要的调用 ToUpper 或 ToLower 方法
String是不变类,调用ToUpper或ToLower方法都会导致创建一个新的字符串。如果被频繁调用,将导致频繁创建字符串对象。这违背了前面讲到的“避免频繁创建对象”这一基本原则。
例如,bool.Parse方法本身已经是忽略大小写的,调用时不要调用ToLower方法。
另一个非常普遍的场景是字符串比较。高效的做法是使用 Compare 方法,这个方法可以做大小写忽略的比较,并且不会创建新字符串。

string.Compare( str A,str B, bool true)
A:要比较的参数1
B:要比较的参数2
true:设置为true 表示忽略大小写
返回结果: 一个 32 位带符号整数,指示两个比较数之间的词法关系。 值 Condition 小于零 strA 小于 strB。 零 strA 等于 strB。 大于零 strA 大于 strB。

static void Main(string[] args)
    {
        Example e = new Example();
        string kkss = e.Go();//调用委托事件
         Console.WriteLine(kkss);
         #region 测试效率
        string kk = "sssssss";
        kk = kk + "kkkkkkkkk";
        string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFF");
        Console.WriteLine(dtime);
        if (kk == "ssssssskkkkkkkkk")
        {
            string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFF");
            Console.WriteLine(time);

        }
        StringBuilder sb = new StringBuilder();

        sb.Append("sssssss");
        sb.Append("kkkkkkkkk");
        string str = sb.ToString();
        string dtimes = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFF");
        Console.WriteLine(dtimes);
        int pp = string.Compare("ssKKs", "SsKKs", true);//忽略大小写比较效率高
        if (0 == string.Compare(sb.ToString(), "ssssssskkkkkkkKK", true))
        {
            string times = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFFF");
            Console.WriteLine("第二次:" + times);
        }
        Console.ReadLine();
        #endregion
    }

执行结果:
在这里插入图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值