问题描述
为什么有的字符串操作用string类的方法,有的用string类对象的方法:比如:1.stringstr;stringstr1="apple";stringstr2="banana";stringstr=string.Concat(str1,str2);(string类方法)2.stringstr="Ilikeeatapple";stringstr1="apple";stringstr2="banana";str=str.Replace(str1,str2);(string类对象的方法)1中可以这样写吗:stringstr;str=str1.Concat(str2);?????
解决方案
解决方案二:
str.Replace是个扩展方法是这样定义的publicstaticstring(thisstringstr,stringstr1,stringstr2){}扩展方法有限,有些并没有定义成扩展方法,而是定义在string类里,那么你就只能用类里的方法了呗
解决方案三:
publicstaticstringReplace(thisstringstr,stringstr1,stringstr2){}
解决方案四:
行不行,你写下试试,看编译是否通过、是否能得到预想的结果呗?如果不能这么写,你也别纠结,这是乌龟的屁股(规定)。
解决方案五:
不可以的,Concat是静态方法啦,不能用实例访问的。静态方法必须用类名去访问。它属于类的,不属于某个对象的。
解决方案六:
解决方案七:
引用1楼Z65443344的回复:
str.Replace是个扩展方法是这样定义的publicstaticstring(thisstringstr,stringstr1,stringstr2){}扩展方法有限,有些并没有定义成扩展方法,而是定义在string类里,那么你就只能用类里的方法了呗
这跟扩展方法有毛关系啊,你从哪看来的?Replace本来就是个普通的String方法http://referencesource.microsoft.com/#mscorlib/system/string.cs,2938Concat是String的静态方法http://referencesource.microsoft.com/#mscorlib/system/string.cs,3226
解决方案八:
能如何使用当然要看是如何定义的了,有些扩展方法也是后来才加入的,甚至自己也可以写一些,让别人摸不清头脑,呵呵
解决方案九:
静态方法和非静态方法……然后还有扩展方法这几个概念了解清楚就明白了
解决方案十:
引用8楼starfd的回复:
静态方法和非静态方法……然后还有扩展方法这几个概念了解清楚就明白了
顶