当前位置: 首页 > 编程语言 > C#

给字符串类添加扩展方法——C#分享

时间:2023-04-10 12:30:23 C#

给字符串类添加扩展方法——C#不知道我这里做错了什么。无法识别扩展方法。使用系统;使用System.Collections.Generic;使用System.Linq;使用系统文本;使用System.Text.RegularExpressions;使用字符串扩展;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){RunTests();}staticvoidRunTests(){try{///SafeFormatSafeFormat("你好");SafeFormat("测试{0}","值");SafeFormat("测试缺少第二个值{0}-{1}","test1");安全格式("{0}");//常规格式RegularFormat("你好");RegularFormat("测试{0}","值");RegularFormat("测试缺少第二个值{0}-{1}","test1");RegularFormat("{0}");///这里扩展方法识别失败string.SafeFormat("Hello");}catch(Exceptionex){Console.WriteLine(ex.ToString());}控制台.ReadLine();}privatestaticvoidRegularFormat(stringfmt,paramsobject[]args){Console.WriteLine(String.Format(fmt,args));}privatestaticvoidSafeFormat(stringfmt,paramsobject[]args){stringerrorString=fmt;尝试{errorString=String.Format(fmt,args);}catch(System.FormatException){}//记录字符串参数不正确Console.WriteLine(errorString);}}}namespaceStringExtensions{publicstaticclassStringExtensionsClass{publicstaticstringSafeFormat(thisstrings,stringfmt,paramsobject[]args){stringformattedString=fmt;尝试{formattedString=String.Format(fmt,args);}catch(System.FormatException){}//记录字符串参数不正确returnformattedString;你试图在类型String上调用它你需要在String实例上调用它,例如"{0}".SafeFormat("Hello");诚然,这不会如您所愿,因为SafeFormat方法实际上完全忽略了第一个参数。它应该是这样的:publicstaticstringSafeFormat(thisstringfmt,paramsobject[]args){stringformattedString=fmt;尝试{formattedString=String.Format(fmt,args);}catch(FormatException){}//记录字符串参数不正确returnformattedString;}然后你可以调用:"{0}{1}".SafeFormat("Hi","there");扩展方法的意思是它们看起来像扩展类型的实例方法。您不能在看似静态方法的扩展类型上创建扩展方法。您正在定义实例扩展方法,然后尝试将其用作静态方法。(C#无法定义静态扩展方法,但F#可以。)而不是:result=string.SafeFormat("Hello");你想要什么:result="Hello".SafeFormat();要操作的字符串实例(在本例中为“Hello”)。扩展方法出现在类型的实例上,而不是类型本身(例如静态成员)。以上就是C#学习教程:给字符串类添加扩展方法-C#分享的全部内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多付出注意—"Hello".SafeFormat("{0}{1}","two","words")本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: