Ahm*_*med 2 c# var initialization
我写了一个使用OCR的小代码.我遇到了一个令人困惑的情况,即使代码到达初始化点之前,我的数据类型var变量也会被初始化.请看一下这个截图
代码行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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我猜这个status
字段的数据类型是enum
.枚举的第一个值是默认值(如果枚举未编号,则0
值为).
var
只是意味着"使用从该方法返回的数据类型(或一般的赋值).所以var
这里只意味着"返回的枚举类型".
这意味着if REC_OK
是枚举中的第一个值,它是该字段的默认值.枚举不能为空值,因此它显示默认值.
我看到破发点还没有到来.它仍然显示范围中那些未经过编辑的变量的当前状态.这只是一个Visual Studio的事情.