挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim

一:Environment.StackTrace

可能我们看到最多的就是catch中的e参数,里面会有一个StackTrace,然后不可否认的这玩意太有用了,它会把调用堆栈

中的信息输出出来,有了它,我们就可以快速的知道运行代码的执行流并且快速的定位到问题。

有时候我们会遇到这样两个问题:

:线上的bug在本地不能重现。

:由于太多的多态,设计模式,程序员反而对线上的代码执行流向会搞的稀里糊涂的。

为了搞清楚并解决这两个问题,我们看生产日志的时候很在乎代码的执行流以及想获取当前上下文的可疑变量值。获取可疑的

变量值,这个好说,我们通过记录一些变量值到log就可以了,但是怎么记录下当前语句的调用堆栈信息呢?这篇就是我要介绍的一

个属性,很简单, 答案也就在标题上,下面我们看看代码。

1classProgram

2{

3staticvoidMain(string[] args)

4{

5Person person =newPerson();

6

7person.Fly();

8

9Console.Read();

10}

11}

12

13classPerson

14{

15publicvoidFly()

16{

17Fly("test");

18}

19

20publicvoidFly(stringname)

21{

22Console.WriteLine("我的log日志。\n\n",Environment.StackTrace);

23}

24}

这不。。。文件名,方法名,行数都已经脱裤了,也算是给我们看生产日志时候的一把利器吧。

二:Trim

这个我想没有程序员说不知道,但是里面有一个重载,这个不知道有多少程序员知道~

可以看到,我可以去掉字符串前后的指定字符,只要我在char[]中申请即可,而不是仅仅去掉空格,这次为什么要提它,是因为前

几天用asp对接.net的时候遇到的,在asp中有一个join方法,但是它不像C#中的String.Join(",")方法可以去掉尾部的“,” ,比如

数组,在asp中join后会变成“1,2,3,”,而C#中会变成"1,2,3",这个时候当asp传过来的话,在C#中就可以用Trim来剔除

尾部的“,”了。

1vars ="1,2,3,";

2

3varr = s.Trim(newchar[] {','});

4

5Console.WriteLine(r);

6

7Console.Read();

好了,大体就这样了,没什么技术含量,重点就是挖一挖,或许对你有用~

作者:一线码农

原文地址:

https://www.cnblogs.com/huangxincheng/p/3618872.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190814A07NES00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券