問題タブ [implicit-typing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 暗黙的に型指定された変数で配列初期化子を使用できないのはなぜですか?
暗黙的に型指定された変数で配列初期化子を使用できないのはなぜですか?
この制限の技術的な理由はありますか?次のようにタイプを推測できないのはなぜですか。
コンパイラは私が何をしようとしているのかを明確に知っていますが、それは許可されません。
CS0820:暗黙的に型指定されたローカルに配列初期化子を割り当てることができません
更新:4つの有効な配列宣言メソッドを使用してプログラムをコンパイルしましたが、同じILが生成されます:http://pastebin.com/28JDAFbL
これは私の混乱を増すだけです。そして、「仕様がそう言っているので、それはこのようなものです」はほとんど役に立ちません。なぜこのようなスペックなのですか?ここでの理論的根拠は何ですか?
c# - 条件付きスコープ内で暗黙的に型指定された変数を宣言し、それを外部で使用する
以下の簡略化されたコードでは、
変数 MyObject は、条件付きブロックの外ではアクセスできません。if..else の外で反復するにはどうすればよいですか?
c# - テキスト テンプレートで匿名型を使用できますか?
テキスト テンプレートを作成しており、次のコード行があります。
これを匿名型の配列に変換したいと思います:
ただし、テキスト テンプレートは、単一の連続した関数のように見えますが、暗黙的に型指定されたローカル変数の使用を許可していません。
この制限を回避し、テキスト テンプレート内で匿名型を使用する簡単な方法はありますか?
c# - VS2010 shows implicit variable to be of type 'var' instead of the actual type
I'm not sure if this is a bug or something else.
I create a new Web Application project in VS2010. In the project, I create a new class (Class1), with the following contents:
When I hover my mouse over s
in the Console.WriteLine(s) line, a popup appears showing (local variable) string s
. Great, just as I expect.
Now, I add an App_Code
folder to the project. Inside it, I again create a new class (Class2), with the exact same contents (except the class name). Now, when I hover s
, it shows (local variable) var s
.
Why is it showing var
in stead of string
? Is this a bug? Can you reproduce this behavior?
It's even worse. If I move Class2.cs from the App_Code folder to the root of the project, VS2010 still doesn't show the type. Even after restarting VS2010 and reopening the project, VS2010 will show the correct type in Class1 but not in Class2. I've also tried deleting the .suo
and .csproj.user
files, but still no difference. Apparently VS2010 caches this information somewhere.
c# - 可能なのに暗黙の型(var)を使用する必要があるのはなぜですか?
重複の可能性:
C#3.0でのvarキーワードの利点
昨日、MSからの推奨事項に出くわしました。可能な場合は、varを使用する必要があります。
http://msdn.microsoft.com/en-us/library/ff926074.aspx
正しいタイプを使用すると、コードを文書化するのに役立ち、コンパイル時にバグを見つけるのにも役立つといつも思っていました。
この推奨の背後にある理由は何ですか?
最高のトーマス
c# - System.Data.Datarow の暗黙的な型指定のための C# var の使用
System.Data.DataTable
標準(オブジェクトのコレクションを持つ) を使用していると仮定するとSystem.Data.DataRow
、上記の変数 'row'は .object
ではなく型として解決されSystem.Data.DataRow
ます。
私が期待するように動作します。これには特別な理由がありますか?
ありがとう。
scala - Orderedを暗黙的に使用する
プログラムで使用される特定のタイプのラッパーを作成しようとしています。また、これらすべてのタイプに、特性Ordered [T]を実装することにより、compareメソッドを持たせたいと思います。比較対象の型がOrdred[T]を暗黙的に実装していると判断するcompareメソッドの作成に問題があります。
現在の試み:
これは私が望む構造ですが、エラーが発生し続けます:
私が見逃している構文はありますか?
c# - try...catch の暗黙的に型指定された変数
クリーンでシンプルなため、ほとんどすべてに暗黙の型付けを使用するのが好きです。ただし、try...catch ブロックを 1 つのステートメントにラップする必要がある場合は、変数が定義済みの値を持つようにするために、暗黙的な型指定を解除する必要があります。以下は、不自然な仮説の例です。
GetData()
結果変数の型を明示的に定義しなくても、例外処理で呼び出す方法はありますか? みたいなGetData().NullOnException()
?
c# - 暗黙的に型指定された出力パラメーター
この質問と同様にout
、型を定義することなく、メソッドから暗黙的に型指定された変数にパラメーターをプルできるかどうかを確認することにしました。私の理想的なソリューションは次のようになります。
この場合、CallMyMethod
2 つの通常の入力変数、3 つout
のパラメーター、および戻り値があります。に渡されたデリゲートのセマンティクスに基づいてo1
、 、o2
、o3
、およびの型をコンパイラが自動的に決定するようにします。そのため、出力パラメーターの組み合わせごとに、いくつかのヘルパー デリゲートとメソッドを作成しました。3 つのパラメーターの例を次に示します。returnValue
LiftOutParam
out
理論的には、コンパイラはデリゲートのセマンティクスに基づいて、、、、および型T1
を判別できるはずです。ただし、デリゲートの各パラメーターの型を指定しない限り、上記のコードはコンパイルされません。T2
T3
TReturn
(out p1, out p2, out p3) => { return CallMyMethod(i1, i2, out p1, out p2, out p3); }
out
私が達成しようとしていることを行う方法はありますか? out
どこでも型を明示的に定義しなくても、パラメーターの値を暗黙的に型指定されたローカル変数にプルできる汎用ヘルパー メソッドを作成するには?