如何在c#中将VAR的使用转换为显式类型

本文关键字:转换 类型 中将 VAR | 更新日期: 2023-09-27 18:15:22

我有一些代码使用了一个类,这个类是用IKVM从Java转换过来的,以便在。net中使用。所以我的代码示例在实例化类时使用VAR,例如:

var Something = new OriginallyFromJavaClass("c:'ReadInThisFile.txt");

然后这个类的方法对文本文件做一些事情,比如:

var analyze = OriginallyFromJavaClass.method1(whatever);

注意,类的其他用法并没有引用"Something",而只是直接调用java类名,不带"new"这个词。

问题是,阅读文本文件一次需要30秒,所以我想在我的WinForms应用程序中只做一次,然后在一个按钮点击中调用其他方法。但是如果我将上面的代码行移动到我的类级别,这样我只需要打开TXT文件一次,c#编译器就会失败,因为它不允许在类级别上使用VAR类型。我从根本上知道,从使用GetType来评估这个变量,它是一个类。那么,我如何使用显式类型重构上面的代码,以及我在哪里实例化类(因此读取我的TXT文件)一次呢?

如何在c#中将VAR的使用转换为显式类型

var只是为了让你不必像

那样重复自己
OriginallyFromJavaClass Something = new OriginallyFromJavaClass("c:'ReadInThisFile.txt");

所以你可以使用

A a = new A()
不是

var a = new A()

Try

 OriginallyFromJavaClass Something = new OriginallyFromJavaClass("c:'ReadInThisFile.txt");

好吧,var只是推断类型,如果你只是声明实际类型,应该没问题。

TypeClass something = new TypeClass("c:'ReadInThisFile.txt");

虽然var只是语法糖,但要清理一点代码。有时可能会发生错误,因为CLR期望的与推断的返回的实际上是不正确的。所以有时候,明确一点是很理想的。

Dictionary<int, List<Sample>> example = new Dictionary<int, List<Sample>>();
var example = new Dictionary<int, List<Sample>>();

因此,只要正确地推断类型,它就与显式声明相同。