Вы можете использовать функцию jquery toggle () для задачи
$("#btnsearch").click(function(){
$("#Show").toggle();
});
. С помощью функции jquery toggle () автоматически скрыть и показать целевой элемент #Show
Попробуйте следующее:
Type type = object.GetType();
bool isNumber = (type.IsPrimitiveImple && type != typeof(bool) && type != typeof(char));
Типы примитивов: Boolean, Byte, SByte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Char, Double и Один.
Взяв решение Гийома немного дальше:
public static bool IsNumericType(this object o)
{
switch (Type.GetTypeCode(o.GetType()))
{
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
return true;
default:
return false;
}
}
Использование:
int i = 32;
i.IsNumericType(); // True
string s = "Hello World";
s.IsNumericType(); // False
Введите расширение с поддержкой пустого типа.
public static bool IsNumeric(this Type type)
{
if (type == null) { return false; }
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
{
type = type.GetGenericArguments()[0];
}
switch (Type.GetTypeCode(type))
{
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
return true;
default:
return false;
}
}
упс! Неправильно прочитал вопрос! Лично я бы сделал бросок с Скит .
хм, похоже, вы хотите DoSomething
на Введите
ваших данных. Вы можете сделать следующее
public class MyClass
{
private readonly Dictionary<Type, Func<SomeResult, object>> _map =
new Dictionary<Type, Func<SomeResult, object>> ();
public MyClass ()
{
_map.Add (typeof (int), o => return SomeTypeSafeMethod ((int)(o)));
}
public SomeResult DoSomething<T>(T numericValue)
{
Type valueType = typeof (T);
if (!_map.Contains (valueType))
{
throw new NotSupportedException (
string.Format (
"Does not support Type [{0}].", valueType.Name));
}
SomeResult result = _map[valueType] (numericValue);
return result;
}
}
Все они являются типами значений (кроме bool и, возможно, enum). Таким образом, вы можете просто использовать:
bool IsNumberic(object o)
{
return (o is System.ValueType && !(o is System.Boolean) && !(o is System.Enum))
}
К сожалению, у этих типов не так много общего, кроме как все они являются типами значений. Но чтобы избежать длинного варианта переключения, вы можете просто определить список только для чтения со всеми этими типами, а затем просто проверить, находится ли данный тип внутри списка.
, вызвавшие некоторые проблемы с помощью рекурсии, например исключения StackOverFlow и т.п., будут выбрасываться внутри блоков try ... catch, потому что они фактически не выбрасываются из какой-либо конкретной строки кода в блоке, а скорее являются CLR. Это также верно для исключений памяти вне допустимого диапазона и других проблем, которые не являются прямым результатом какой-либо одной строчки кода.
Возможно, вы говорите о чем-то вроде этого:
public static bool IsNumericType(Type type)
{
switch (Type.GetTypeCode(type))
{
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.UInt16:
case TypeCode.UInt32:
case TypeCode.UInt64:
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.Int64:
case TypeCode.Decimal:
case TypeCode.Double:
case TypeCode.Single:
return true;
default:
return false;
}
}
Замечание об оптимизации удалено (см. Комментарии enzi)
И если вы действительно хотите оптимизировать его (теряя читаемость и некоторую безопасность ...):
public static bool IsNumericType(Type type)
{
TypeCode typeCode = Type.GetTypeCode(type);
//The TypeCode of numerical types are between SByte (5) and Decimal (15).
return (int)typeCode >= 5 && (int)typeCode <= 15;
}
Краткий ответ: Нет.
Более длинный ответ: Нет.
Дело в том, что многие различные типы в C # могут содержать числовые данные. Если вы не знаете, чего ожидать (Int, Double и т. Д.), Вам нужно использовать «длинный» оператор case.
Не используйте переключатель - просто используйте набор:
HashSet<Type> NumericTypes = new HashSet<Type>
{
typeof(decimal), typeof(byte), typeof(sbyte),
typeof(short), typeof(ushort), ...
};
РЕДАКТИРОВАТЬ: Одно из преимуществ этого перед использованием кода типа заключается в том, что когда в .NET вводятся новые числовые типы (например, BigInteger и Complex ) легко настроить - тогда как эти типы не будут получить код типа.