2016-03-20 8 views
1

私は彼が言ったJoeDuffy本を読んでいます。C#は静的に型付けされていますか? <code>C# is a (mostly) statically typed.</code>が効果的に使用している強く型付けされた言語としてのC#を記述し、私が読んだ記事や書籍のほとんどは「強く型付けされた」</p> <p>静的型付けを意味する:

真実はどこですか? mostlyの意味は? (おそらく、CLRの型安全性の外にある非常に少数の機能を指しているでしょうか)

+4

真実は次のとおりです。https://blogs.msdn.microsoft.com/ericlippert/2012/10/15/is-ca-strongly-typed-or-a-weakly-typed-language/ –

+2

おそらく'dynamic'キーワード? – glcheetham

+0

関連情報:http://stackoverflow.com/q/859186/447156 –

答えて

1

C#の最も明白な非静的型付き部分は、dynamicキーワードです。次のコードは合法的であるようdynamicとして宣言された変数は、実行時まで入力関連のチェックを延期:(varキーワードを含む)のC#の

dynamic x = "a string"; 
x = 7; 
x.NonExistingMethod(); 

他の部分は静的に型付けされています。人々は時々varをJavaScriptのキーワードと混同しますが、C#のvarタイプ推論です。静的に型定義されていますが、あまり明示的ではありません

+0

'int [] a =新しいint [3] {1、2、3}; Console.WriteLine(a [3]); ' なぜこのコードを正常にビルドできますか? –

+0

バッファオーバーフローやシステムメモリの任意の場所へのインデックス作成はできません。 –

+0

@ivan_petrushenkoなぜあなたはできないでしょうか?どの部分が失敗すると思いますか?私がそれを理解する方法は、C#のインデクサは基本的にはメソッド呼び出しです。配列型は 'int'引数を受け付けるインデクサを公開します。 3は有効な 'int'なので、ここでは何も起こっていません。 – kai

1

静的型付きプログラミング言語はコンパイル時にコンパイル時に実行時に実行されます。動的に型付けされたプログラミング言語は、コンパイル時ではなく実行時に型チェックを行います。

強く/弱いタイプは、タイプがどれほど厳密に区別されているか(たとえば、言語が文字列から暗黙の数値に変換しようとしているかどうかなど)です。

単に静的型言語では型は静的です。つまり、変数を型に設定すると変更できません。

ここでの主な利点は、すべての種類のチェックがコンパイラによって実行できることです。したがって、非常に早い段階でたくさんのバカなバグがキャッチされます。

実行時に変数の型が解釈されると、言語は動的に型指定されます。これは、毎回タイプを指定する必要がないため、プログラマが少し速く書くことができるということです。例:Perl、Ruby、Python

ほとんどのスクリプト言語には、とにかく静的型チェックを行うコンパイラがないため、この機能がありますが、インタープリタが型の誤解によって変数

+1

あなたは主な質問に答えることができますか?ほとんど何を意味しますか? –

+0

@ivan_petrushenko C#3.0以降では、多くの場合、型名の代わりに "var"キーワードを使うことができます。 –

+4

@MidhunMundayadan 'var'キーワードは静的型付けをしません。 'var x =" hi ";を試してみてください。 x = 1; 'とコンパイラーが文句を言うかどうか確認してください。しかし、 'dynamic'キーワードがあります。 – kai

関連する問題