小编Acc*_* IT的帖子

C# 错误 CS0165:使用未分配的局部变量 - 忽略逻辑和输出引用

四处搜索后,我似乎无法找到为什么 C# 编译器抱怨本地变量dteDest 在行中未分配

if (dteSrc == dteDest) {
Run Code Online (Sandbox Code Playgroud)

如果我更换线路,错误就会消失

DateTime dteSrc, dteDest;
Run Code Online (Sandbox Code Playgroud)

DateTime dteSrc, dteDest = DateTime.MinValue;
Run Code Online (Sandbox Code Playgroud)

据我所知,如果 dteDest 没有被 DateTime.TryParse 初始化,它是一个 out 参数,那么代码永远不会到达比较行。

我的逻辑是:

  1. 如果 currentDataObj 为 null,则 booHaveOrigDate 为 false,第一个if失败
  2. 如果 currentDataObj 不为 null 但无法转换为 DateTime,则 booHaveOrigDate 为 false,如果失败则为第一个
  3. 如果 DateTime.TryParse 无法转换为 DateTime,则它将返回 false,这与 && 意味着永远不会使用 dteDest。

简单示例代码

void StrangeLogic(object srcData, object currentDataObj) {
   DateTime dteSrc, dteDest;

   bool booHaveNewDate = DateTime.TryParse(srcData.ToString(), out dteSrc);
   bool booHaveOrigDate = (currentDataObj != null) 
                          && …
Run Code Online (Sandbox Code Playgroud)

c# tryparse unassigned-variable

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

tryparse ×1

unassigned-variable ×1