Можно ли вызвать метод непосредственно на литералах объекта в C #? - PullRequest
0 голосов
/ 29 июля 2011

В C # при вызове некоторых методов экземпляра, мы всегда объявляем переменную этого типа, затем присваиваем ей значение и, наконец, вызываем этот метод:

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

В Javascript мы можем сделатьthis:

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

Являются ли такие вызовы методов допустимыми в C #, скажем, напрямую использовать строковый литерал в качестве сокращения, без объявления переменной?

Ответы [ 4 ]

11 голосов
/ 29 июля 2011

Да, это абсолютно правильно и нормально.

Я подозреваю, что вы не всегда объявляете переменную даже без использования литералов.Например, рассмотрим:

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

Здесь мы используем результат Substring в качестве экземпляра для вызова Trim.Отдельная переменная не используется.

Но это также можно было бы написать:

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

То же самое верно и для примитивных литералов:

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

В конечном счете, aлитерал - это просто еще один вид выражения , который может использоваться как цель вызовов методов экземпляра.

0 голосов
/ 29 июля 2011

Да, и самое лучшее в этом то, что вам даже не нужно проверять на ноль .

0 голосов
/ 29 июля 2011

Да, это действительно. С этим проблем нет.

0 голосов
/ 29 июля 2011

Да, это возможно. Однако я не рекомендовал бы это вообще, потому что это сбивает с толку, и не понятно другим разработчикам, что вы делаете.

...