Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中是否可以直接对对象文本调用方法?_C#_Methods_Call_Literals - Fatal编程技术网

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

在C#中是否可以直接对对象文本调用方法?,c#,methods,call,literals,C#,Methods,Call,Literals,在C#中,调用某些实例方法时,我们总是声明该类型的变量,然后为其赋值,最后调用该方法: string str = "this is a string"; int test = str.IndexOf("a"); 在Javascript中,我们可以这样做: var test = 'sdfsldkfjskdf'.indexOf('a'); 这种方法调用在C#中合法吗?比如说,直接使用字符串文字作为简写,而不声明变量?是的,它绝对有效 我怀疑即使不使用文字,也不会总是声明变量。例如,考虑: str

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

string str = "this is a string";
int test = str.IndexOf("a");
在Javascript中,我们可以这样做:

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

这种方法调用在C#中合法吗?比如说,直接使用字符串文字作为简写,而不声明变量?

是的,它绝对有效

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

string x = "hello";
string y = x.Substring(2, 3).Trim();
这里我们使用
子字符串的结果作为调用
Trim
的实例。没有使用单独的变量

但这同样可以写成:

string y = "hello".Substring(2, 3).Trim();
原语文字也是如此:

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

说到底,文本只是另一种表达式,可以用作实例方法调用的目标。

是的,这是可能的。但是,我一般不推荐它,因为它让人困惑,而且其他开发人员也不清楚您在做什么。

是的,它是有效的。没问题。

是的,最好的是你甚至不必检查null。

简短的回答是肯定的,你也可以链接方法调用:IMO。在有些情况下,这类事情可能没问题,但我很难找到合适的时机来做某事。大多数时候,我认为它需要重新审视。YMMV我已经使用过很多次的一个例子:我想要一个类型为
char[]
的静态字段,最简单的填充方法是
“abcdef”.tocharray()
.thx。但我只是想知道:为什么VS IntelliSense在字符串文本上工作,但在键入
10.
时不显示任何内容。因为它无法推断10的实际类型?@pink:键入
10.
,然后按Ctrl空格键对我有效。如果不按Ctrl-Space,我怀疑VS不想显示IntelliSense选项,因为您可能正在编写浮点文本。