2016-10-28 13 views
-2

.NETで使用するためにIKVMを使用してJavaから変換されたクラスを使用するコードがあります。など、クラスをインスタンス化するときに私のコードサンプルは、VARを使用しています。C#でVARの使用を明示的な型に変換する方法

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

次に、このクラスのメソッドのようなそのテキストファイルで何かを実行します。クラスのこれらの他の用途が行うこと

var analyze = OriginallyFromJavaClass.method1(whatever); 

お知らせ"Something"を参照するのではなく、 "新しい"単語なしでJavaクラス名を直接呼び出すだけです。

問題は、テキストファイルを一度読み取ると30秒かかるため、私はWinFormsアプリケーションで一度だけ実行し、ボタンクリック内で他のメソッドを呼び出したいと思っています。しかし、上記のコード行をクラスレベルに移動すると、TXTファイルを一度開くだけで、クラスレベルでVAR型を許可しないため、C#コンパイラが失敗します。私は根本的に、GetTypeを使ってこの変数をクラスとして評価することを知っています。だから私は上記の明示的な型を使用して、私はクラスをインスタンス化(したがって、私のTXTファイルを読む)を一度だけ再構成するだろうか?

+0

どのようなタイプですか?それがそのタイプです。そのタイプを使用してください。コードは 'new OriginallyFromJavaClass()'と言う。それがそのタイプです。それはタイプです。オブジェクトのタイプは、それが属するクラスです。クラスが型です。フィールドをその型として宣言します。他のどのようなタイプが可能でしょうか?そこに整数を作成しているようですか? ** 012 *を試しましたか?** –

+0

'OriginallyFromJavaClass Something = new OriginallyFromJavaClass(@" c:\ ReadInThisFile.txt ");' – itsme86

+0

あなたのタイプが何であるかを 'var'に置き換えてください...? 'var Something ='は 'OriginallyFromJavaClass Something =' – nhouser9

答えて

1

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

まあ、VARだけinfers the typeあなただけの代わりに実際の型を宣言する場合は問題ないはずですしてみてください。

TypeClass something = new TypeClass("c:\ReadInThisFile.txt"); 
+1

これは答えではありません。それはコメントでなければなりません。あなたは私が信じている50人の担当者にコメントを残すことができます。 – itsme86

2

varが、単にので、あなたが代わりに

var a = new A() 
+0

'var'を使用している場合を除き、VS intellisenseは開発時にメンバーを拾いません。さもなければ、 'var'は素敵で、かわいい、素敵です。 – ajeh

+4

@ajeh、それは当てはまりません、VS intellisenseはあなたがvarを使っているかどうかにかかわらずまったく同じように振る舞います – Evk

+0

私にとってはうまくいきません。なぜダニー? – ajeh

0

A a = new A() 

を使用することができますvarは単純な構文ですが

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

のように自分自身を繰り返す必要がないために糖であります砂糖、少しコードをきれいにする。 CLRが期待するものと、返されるものが実際には間違っているため、エラーが発生することがあります。時には明示的であることが理想的です。

それ以外の場合は、短い手のための理想的なされています。だから、限り、それは正しくタイプを推測するように、明示的な宣言と同じである

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

。うまくいけば、これはあなたの問題を明確にします。

関連する問題