如何在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文件)一次呢?
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>>();
因此,只要正确地推断类型,它就与显式声明相同。