2011-07-29 20 views
0

いくつかのインスタンスメソッドを呼び出すときにC#では、私たちは常に、その型の変数を宣言し、それに値を代入し、最後にそのメソッドを呼び出します。JavaScriptでC#のオブジェクトリテラルでメソッドを直接呼び出すことはできますか?

string str = "this is a string"; 
int test = str.IndexOf("a"); 

、我々はこれを行うことができます:

var test = 'sdfsldkfjskdf'.indexOf('a'); 

C#では、この種のメソッド呼び出しは正しいと言えます。たとえば、変数の宣言をせずに直接文字列リテラルを省略形として使用しますか?

+1

短い答えはイエスであり、あなたはまた、チェーンメソッドを呼び出しすることができます: http://stackoverflow.com/questions/2849193/can-a-c-method-chain-be-too-long – JonH

答えて

11

はい、絶対に有効です。

はリテラルを使用しなくても常に変数を宣言します。たとえば、考えてみます。

string x = "hello"; 
string y = x.Substring(2, 3).Trim(); 

ここでは、Trimを呼び出すためのインスタンスとしてSubstringの結果を使用しています。別の変数は使用されません。

しかし、これは均等に書かれている可能性:

string y = "hello".Substring(2, 3).Trim(); 

同じことがあまりにも原始的リテラルの真実である:

string x = 12.ToString("0000"); 

最終的には、リテラルができ表現のちょうど別の種類であり、インスタンスメソッドの呼び出しのターゲットとして使用できます。

+0

THX非常に。しかし、私はちょうど不思議です:なぜVS IntelliSenseは文字列リテラルで動作しますが、 '10.'と入力しても何も表示されません。 10の実際のタイプを推論することができないからですか? –

+1

@pink: '10.'を入力してからCtrl-Spaceを押すと、私のために働きます。 Ctrl + Spaceキーを押さずに、浮動小数点リテラルを書いているように、VSがIntelliSenseオプションを表示したくないと思われます。 –

0

はい、可能です。しかし、一般的にはお勧めしません。混乱しているし、他の開発者にあなたがしていることを明確にしていないからです。

+2

.......本当に? –

+0

IMO。このようなことがうまくいく場合がありますが、私は何かをする正しい方法であることを見つけるのに苦労しています。ほとんどの場合、私はそれがもう一度見えると思う。 YMMV –

+0

私はかなりの時間を使いました。私はタイプ 'char []'の静的なフィールドを必要としました。それを取り込む最も簡単な方法は '' abcdef ".ToCharArray()'です。 –

0

はい有効です。それに問題はない。

+0

笑、あなたはすべて私にそれを打つ! – Senick

0

はい、それについての最も良いことは、でもnullを確認する必要はありませんです。

関連する問題