2016-05-09 20 views
3

が、私はこれを持つ単一のASPXファイルを持っていると仮定しましょう:リフレッシュした後構造体とクラスの単一のページで許可されていないASP.NET

<%@ Page Language="C#" %> 

<html> 
    <body> 
    <% 
    int i = 5; 
    Response.Write(i); 
    %> 
    </body> 
</html> 

ブラウザは、私が「I」画面での内容を参照してください。

しかし、私はことを書いた場合:私はエラーを取得する

<%@ Page Language="C#" %> 

<html> 
    <body> 
    <% 
    struct S 
    { 
     public int i; 
    } 

    S a = new S(); 
    a.i = 5; 
    Response.Write(a.i); 
    %> 
    </body> 
</html> 

:私は 'クラス' でキーワード '構造体' を交換する場合、同じ問題が発生した

Line 18: a.i=5; 
CS1519: Invalid token '=' in class, struct, or interface member declaration. 

私は 'codefile'と 'codebehind'タイプのプロジェクトを知っていますが、なぜC#プログラムのように一つのASPXファイルで構造体とクラスを宣言できないのでしょうか?

誰かが私に理由を指摘できますか?

ありがとうございます。

+0

あなたが公共のキーワードが不足していますか? – InferOn

+0

@ Infer-On、それはタイプミスでした。エラーはpublicキーワードで発生します。 – user6311515

答えて

2

:そうすることで

<%@ Page Language="C#" %> 
<script runat=server> 
    struct S 
    { 
     public int i; 
    } 
</script> 
<html> 
    <body> 
    <% 
    S a = new S(); 
    a.i = 5; 
    Response.Write(a.i); 
    %> 
    </body> 
</html> 

に結果は、したがって、それはどこかにアクセスできるようになります、あなたはASPXから継承しているものは何でもクラスにprivate structインナーを作成することですこのページ(しかしどこにも)。

もう一つの例:ここscript埋め込まれたコードブロックを使用して、およそDeclare a class in inline-code in aspx/c#

さらに詳しい情報:https://msdn.microsoft.com/en-us/library/ms178135.aspx#Anchor_0

+0

ありがとうございました。非常に役立ちます。 – user6311515

0

.aspxページがクラスとしてコンパイルされているためです。

コードビハインドクラスがある場合、partialとマークされていることがわかります。 .aspxページとそのコードビハインドクラスは、どちらも同じ名前のpartialクラスとしてコンパイルされます。

私は、.aspxの内容がメソッドに配置されていると考えています。メソッド内で構造体やクラスを宣言することはできません。あなたが指定したrunat=serverscript要素使用して行うことができ

+0

".aspxの内容がメソッドに置かれていると思われます..."おそらくこれはエラーの原因です。なぜなら、.aspxページがクラスとしてコンパイルされていても、どのOO言語でも、クラス(深いレベル制限なし)。 – user6311515

関連する問題