C# 基础备忘录

1. decimal 类型调用ToString()方法后没把末尾的0去掉的解决办法:

例子:decimal? money = Convert.ToDecimal(10.8950);

string moneyStr=money.Value.ToString(); 结果在同一台机子,两个项目里面会出现两个不同的结果。

结果一:moneyStr="10.895";

结果二:moneyStr="10.8950";   此结果并没把末尾的0去掉。

如果使用如下方式就可以去掉,不会出现在同一台机子,两个项目里面会出现两个不同的结果。

moneyStr=money.Value.ToString("G0"); 结果:10.895.

2.C#中的??的释义以及用法:

如果 ?? 运算符的左操作数非 null,该运算符将返回左操作数,否则返回右操作数。
为了减少可空类型的代码量,遇到null的时候
C#提供了??操作符来获取如果为空的默认值。
static void Main(string[] args) 
{
    int? nVal1 = null;
    int? nVal2 = 5;
    // nVal1为空,相乘后还是null,输出0作为默认值
    Console.WriteLine(2 * nVal1 ?? 0);
    // nVal2非空,取计算值输出,输出10
    Console.WriteLine(2 * nVal2 ?? 0);
}

 3.输入日志到Windows日志中:

        /// <summary>
        /// 全局应用程序错误
        /// </summary>
        protected void Application_Error()
        {
            var ex = Server.GetLastError().GetBaseException();

            //将错误日志写入windows 日志中
            EventLog.WriteEntry("yunshangfamen", ex.ToString(), EventLogEntryType.Error);

            var sb = new System.Text.StringBuilder("====================错误信息==================
");
            sb.AppendFormat("错误消息:{0}
", ex.Message);
            sb.AppendFormat("错误页面:{0}
", Request.Url);
            sb.AppendFormat("错误时间:{0}
", DateTime.Now.ToString());
            sb.AppendFormat("堆栈跟踪:{0}
", ex.StackTrace);
            sb.AppendFormat("
错误程序:{0}
", ex.Source);
            sb.AppendFormat("目标地点:{0}
", ex.TargetSite);

            Log.WriteLog(sb.ToString());
        }

原文地址:https://www.cnblogs.com/wgx0428/p/3680727.html