我会声明一个空的String变量,如下所示:
string myString = string.Empty;
Run Code Online (Sandbox Code Playgroud)
是否有'DateTime'变量的等价物?
更新:
问题是我使用这个'DateTime'作为SQL中'StoredProcedure'的参数.例如:
DateTime? someDate = null;
myCommand.Parameters.AddWithValue("@SurgeryDate", someDate);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,会捕获一个异常,告诉我'StoredProcedure'需要'@SurgeryDate'参数.但我提供了它.知道为什么吗?
Bro*_*ass 76
由于DateTime
是一个值类型,你无法分配null
给它,但Nullable<T>
确实引入了这些情况(没有值)- 使用可以为空的DateTime
:
DateTime? myTime = null;
Run Code Online (Sandbox Code Playgroud)
Sha*_*ish 28
不,你有两个选择:
DateTime date = DateTime.MinValue;
Run Code Online (Sandbox Code Playgroud)
当你需要每X个时间做一些事情时(因为你总是会结束MinValue
),这可以工作但实际上可能会导致细微的错误(例如使用一些操作员,MinValue
如果你不小心的话,先不检查你是不是).
你可以使用Nullable
:
DateTime? date = null;
Run Code Online (Sandbox Code Playgroud)
这很好,避免大多数问题,只引入1或2.
这实际上取决于你想要实现的目标.
小智 11
您可以将DateTime变量设置为"1/1/0001 00:00:00",但变量本身不能为空.要使用MinTime,请使用:
DateTime variableName = DateTime.MinValue;
Run Code Online (Sandbox Code Playgroud)
您可能希望使用可为空的日期时间. Datetime? someDate = null;
您可能会发现人们使用DateTime.Max
或DateTime.Min
在这种情况下的实例,但我非常怀疑您是否想要这样做.它导致边缘情况的错误,更难以阅读的代码等.
如果您将日期设置为
DateTime someDate = new DateTime();
Run Code Online (Sandbox Code Playgroud)
“someDate”的值设置为 {1/1/0001 12:00:00 AM}
您使用的方法(AddWithValue
)不会将null
值转换为数据库空值.您应该使用DBNull.Value
:
myCommand.Parameters.AddWithValue(
"@SurgeryDate",
someDate == null ? DBNull.Value : (object)someDate
);
Run Code Online (Sandbox Code Playgroud)
someDate
如果不是null
,则传递该值DBNull.Value
.在这种情况下,正确的值将传递给数据库.
要么:
DateTime dt = new DateTime();
Run Code Online (Sandbox Code Playgroud)
要么
DateTime dt = default(DateTime);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
176590 次 |
最近记录: |