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
变量是Enum
,enum
是值类型,不是引用类型。值类型始终设置默认值,即使您的代码尚未达到设置变量的程度。
此外,var
不是类型,它只是语法糖,您的变量具有真正的 enum
类型。
我写了一个使用 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
变量是Enum
,enum
是值类型,不是引用类型。值类型始终设置默认值,即使您的代码尚未达到设置变量的程度。
此外,var
不是类型,它只是语法糖,您的变量具有真正的 enum
类型。