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()); }