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 = ;
// nVal1为空,相乘后还是null,输出0作为默认值
Console.WriteLine( * nVal1 ?? );
// nVal2非空,取计算值输出,输出10
Console.WriteLine( * nVal2 ?? );
}
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("====================错误信息==================\r\n");
sb.AppendFormat("错误消息:{0}\r\n", ex.Message);
sb.AppendFormat("错误页面:{0}\r\n", Request.Url);
sb.AppendFormat("错误时间:{0}\r\n", DateTime.Now.ToString());
sb.AppendFormat("堆栈跟踪:{0}\r\n", ex.StackTrace);
sb.AppendFormat("\r\n错误程序:{0}\r\n", ex.Source);
sb.AppendFormat("目标地点:{0}\r\n", ex.TargetSite); Log.WriteLog(sb.ToString());
}