C# 中的 Var 初始化

Var Initialization in C#

我写了一个使用 OCR 的小代码。我遇到了一个令人困惑的情况,我的数据类型 var 的变量甚至在代码到达它们被初始化的点之前就被初始化了。 请看这张截图

代码行 RecAPIPlus.RecInitPlus(null,null); 应该是 return API 初始化的状态。这一行甚至还没有执行,但我的状态变量似乎有一个默认值,即 REC_OK 上面的代码行在执行时应该是 return .
任何人都可以解释这个的原因吗?这是完整的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Nuance.OmniPage.CSDK;
namespace OmniPage
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            {

                Console.WriteLine(Nuance.OmniPage.CSDK.ZONETYPE.WT_AUTO);



                var status=RecAPIPlus.RecInitPlus(null,null);
                IntPtr a;
                var output = RecAPI.kRecLoadImgF(0, "out.txt", out a, 1);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e);
            }
        }
    }
}

我猜 status 字段的数据类型是 enum。枚举的第一个值是默认值(如果枚举未编号,则 0 值为)。

var 仅表示 "use the data type returned from that method (or assignment in general). So var here means just " 返回的枚举类型。

这意味着如果 REC_OK 是枚举中的第一个值,它就是该字段的默认值。枚举不能有空值,所以它显示默认值。

我看到断点还没有出现。它仍然显示范围内那些未初始化变量的当前状态。那只是 Visual Studio 的事情。

status变量是Enumenum是值类型,不是引用类型。值类型始终设置默认值,即使您的代码尚未达到设置变量的程度。
此外,var 不是类型,它只是语法糖,您的变量具有真正的 enum 类型。