C#中的Var初始化

时间:2015-11-30 12:45:19

标签: c# initialization var

我写了一个使用OCR的小代码。我遇到了一个令人困惑的情况,我的数据类型 var 变量在代码达到初始化之前就已经初始化了。 请看一下这个截图 enter image description here

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

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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:5)

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

var只是意味着“使用从该方法返回的数据类型(或一般的赋值)。所以var这里的意思就是”返回的枚举类型。“

这意味着如果REC_OK是枚举中的第一个值,则它是该字段的默认值。枚举不能为空值,因此它显示默认值。

我看到破发点还没有到来。它仍然显示范围中那些未经过编辑的变量的当前状态。这只是一个Visual Studio的事情。

答案 1 :(得分:2)

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