我写了一个使用OCR的小代码。我遇到了一个令人困惑的情况,我的变量数据类型var在代码达到初始化之前被初始化。 请看看这张截图
在C#中初始化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);
}
}
}
}
RecInitPlus的返回类型是什么?它返回一个枚举?这个枚举是否有明确的值?如果REC_OK是第一个枚举成员,并且它没有显式值,那么它的值是0,这是默认值。你期望变量在赋值之前有什么价值? –
将'var'想象成一个占位符,编译器会为你填充它。所以它总是有一个类型。 – DavidG
尽管您可能会在代码中的任意位置定义变量,但编译器将实际使用默认值在当前范围的顶部定义它。 – juharr