一个小的 Tips.

.NET 中函数参数的默认值需要是编译时常量。如果参数是引用类型,可以设置Null,如果是值类型,可以设置相应的编译时常量,如整型可以用整数,但对于DateTime(结构体,值类型)想要设置默认类型时要如何处理?

通常情况下会给 DateTime 结构体默认当时时间,即 DateTime.Now,但 DateTime.Now 不是编译时常量,因此无法通过编译。

如以下代码无法通过编译:

public const DateTime defaultDateTime = DateTime.Now;

但可以通过设置 DateTime 类型参数为可空类型,给其默认参数为 null,并在函数中进行判断赋值来实现,如下代码:

static void TestMethod(DateTime? date = null)
{
date = date ?? DateTime.Now;
}

以上思路是将 DateTime 参数转换为可空类型,并赋予默认值 null,然后在函数体内先判断参数是否为空,如果为空则用 DateTime.Now 来赋值,否则使用参数值。

以上内容很简单,只是觉得这个 Tips 很好玩。

最新文章

  1. DevExpress ComboBoxEdit 添加值
  2. PHP 笔记一(systax/variables/echo/print/Data Type)
  3. 逆向分析AHpack
  4. 面向对象的小demo
  5. 【Android测试】【第十三节】Uiautomator——如何组织好你的测试代码(项目实战)
  6. phpcms v9修改栏目描述的多行文本为编辑器方法
  7. 辛星Spring4.x教程开放下载了
  8. POJ 1062 昂贵的聘礼(dij+邻接矩阵)
  9. MySQL在字段中使用select子查询
  10. C#设计模式之一单例模式(Singleton Pattern)【创建型】
  11. Chapter 5 Blood Type——32
  12. Python学习(二) —— 运算符
  13. miniui中可以设置是否让页面进行分页 <div id="datagrid1" class="mini-datagrid" style="width:100%" allowAlternating="true" showpager="true"/> 就是设置showpager属性为true
  14. opencv学习之路(7)、访问图像像素
  15. RxJava学习(一)——简介及其优势
  16. angularJs入门篇-hello world 开头
  17. 泛微OA e-cology8 数据库链接
  18. http后台json解析实例
  19. SV中的Interface和Program
  20. spring boot 学习(十)SpringBoot配置发送Email

热门文章

  1. 解构C#游戏框架uFrame兼谈游戏架构设计
  2. C#使用GET、POST请求获取结果
  3. ExecuteOrDelayUntilScriptLoaded 还是 SP.SOD.executeFunc?
  4. Android Studio —— 创建Menu菜单项
  5. Lucene4.4.0 开发之排序
  6. sqlyog导出json数据格式支持mysql数据转存mongodb
  7. css 填坑常用代码分享
  8. ASP.NET Aries JSAPI 文档说明:AR.DataGrid
  9. Ubuntu(Linux) + mono + jexus +asp.net MVC3 部署
  10. WinForm中显示PDF文件