2

私はMono.CSharpのエバリュエーターを試しています。この単純なスクリプトが機能する理由:

int i=2,j=3; (i*j);

これはエラーになります:

int i=2,j=3; i*j;

「(1,2):エラーCS0246:タイプまたは名前空間名 `i'が見つかりませんでした。usingディレクティブまたはアセンブリ参照がありませんか?」

4

1 に答える 1

3

Mono.CSharp エバリュエーターは、C# の標準文法規則に従います。2 番目の例では、実際に C# 文法に基づいてローカル変数を宣言しています。

人間による解析を容易にするために、これに書き換えることができます

int i = 2, j = 3;
i* j;

コンパイラは 2 行目を別の変数宣言として解析し、ポインタ "*" を適用する前に "i" を型として解決しようとします。

于 2012-06-21T13:52:21.547 に答える