如果C#中的语句简化了我有一行代码如下:if(objisbyte||objisint||objislong||objisdecimal||objisdouble||objisfloat)有没有可能写出比这更优雅的东西?类似的东西:if(objisbyte,int,long)我知道我的例子不可能,但是有没有办法让它看起来“更干净”?您可以在对象上编写扩展方法,语法如下:if(obj.Is()){...}{returnoisT1||oisT2||oisT3;}only:staticreadonlyHashSettypes=newHashSet{typeof(byte),typeof(int),typeof(long)etc};...if(types.Contains(obj.GetType()){}或者使用obj.GetType().GetTypeCode()。我会把它放到一个简化它的方法中:privatestaticboolObjIsNumber(objectobj){return(objisbyte||obj是int||obj是long||obj是十进制||obj是double||obj是float);}你为什么不这样做呢?boolIsRequestedType(objectobj){if(obj是byte||objisint||objislong||objisdecimal||objisdouble||objisfloat)returntrue;returnfalse;}或者也许你可以转义objisIComparable这对我来说很好用——很好很清楚。publicstaticboolIsOneOf(objecto,paramsType[]types){foreach(Typetintypes){if(o.GetType()==t)returntrue;}返回假;}长l=10;双d=10;字符串s="blah";Console.WriteLine(IsOneOf(l,typeof(long),typeof(double)));//trueConsole.WriteLine(IsOneOf(d,typeof(long),typeof(double)));//trueConsole.WriteLine(IsOneOf(s,typeof(long),typeof(double)));//false创建一个辅助函数来测试。就像上面是C#学习教程:如果C#中的语句简化了所有分享的内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注——publicstaticBooleanIsNumeric(ObjectmyObject){return(obj是byte||obj是int||obj是long||obj是decimal||obj是double||obj是float);管理员删除。如需转载请注明出处:
