Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#_.net_Reflection_Types_Casting - Fatal编程技术网

C# 确定实例是否为特定类型的最佳方法

C# 确定实例是否为特定类型的最佳方法,c#,.net,reflection,types,casting,C#,.net,Reflection,Types,Casting,我正在做一个C#项目,我发现自己遇到了这种情况: TypeCode code = value == null ? TypeCode.DBNull : TypeCode.GetTypeCode(value.GetType()); switch(code) { case TypeCode.DBNull: data = SerializeNull(); break; case TypeCode.String: data = SerializeString((String) value

我正在做一个C#项目,我发现自己遇到了这种情况:

TypeCode code = value == null ? TypeCode.DBNull : TypeCode.GetTypeCode(value.GetType());

switch(code) {
    case TypeCode.DBNull: data = SerializeNull(); break;
    case TypeCode.String: data = SerializeString((String) value); break;
    case TypeCode.Int32: data = SerializeInt32((Int32) value); break;
    // ... MORE TYPES
}
我的问题是:

使用这种“类型确定”技术比使用这种技术有什么优势吗

if(value == null) data = SerializeNull();
else if(value is String) data = SerializeString((String) value);
else if(value is Int32) data = SerializeInt32((Int32) value);
至于我的观点,我觉得最后一个更容易理解和实现

我还是想知道是否有性能问题


提前感谢

这似乎仍然是个问题,因为
数据
可能只是一个
对象
,以后必须向下转换。是否存在此数据不是强类型的原因?运行时vs编译时vs继承:)不能对自定义对象使用类型码,例如值为MyClass,但您可能不需要这样做。@BradleyDotNET数据只是一个字节数组,包含给定值的序列化字节。@user3779753该问题似乎是重复的。我会读的,让你保持联系