是否可以直接在C#中的对象文字中调用方法?

pin*_* li 0 c# methods call literals

在C#中,当调用某些实例方法时,我们总是声明该类型的变量,然后为其赋值,并最后调用该方法:

string str = "this is a string";
int test = str.IndexOf("a");
Run Code Online (Sandbox Code Playgroud)

在Javascript中,我们可以这样做:

var test = 'sdfsldkfjskdf'.indexOf('a');
Run Code Online (Sandbox Code Playgroud)

这种方法在C#中是否合法,比方说,直接使用字符串文字作为简写,没有变量的声明?

Jon*_*eet 11

是的,它绝对有效而且很好.

我怀疑即使不使用文字也不总是声明变量.例如,考虑:

string x = "hello";
string y = x.Substring(2, 3).Trim();
Run Code Online (Sandbox Code Playgroud)

这里我们使用结果Substring作为要调用的实例Trim.没有使用单独的变量.

但这同样可以写成:

string y = "hello".Substring(2, 3).Trim();
Run Code Online (Sandbox Code Playgroud)

原始文字也是如此:

string x = 12.ToString("0000");
Run Code Online (Sandbox Code Playgroud)

最终,文字只是另一种表达式,可以用作实例方法调用的目标.