【问题标题】:Check if object is Byte[] [duplicate]检查对象是否为字节 [] [重复]
【发布时间】:2021-07-17 10:44:56
【问题描述】:

如何使用反射检查对象是否为byte[]?我使用这行代码检查typeof(T).GetType().Equals(typeof(byte[])),但它并没有为我解决。这可以实现吗?

public static SetSqlDbType<T>()
{
    switch(Type.GetTypeCode(typeof(T)))
    {
        case TypeCode.Int64:
            return SqlDbType.BigInt;
        // ... some more cases
        case TypeCode.Object:
        {
            if (typeof(T).GetType().Equals(typeof(byte)))
            {
                return SqlDbType.VarBinary;
            }
        }
    }
}

【问题讨论】:

  • 请给我们看一个不起作用的例子。
  • 你也可以在这里用==代替Equals。但是,这可能无法解决问题,除非您提供您尝试过的内容以及它如何不起作用,否则我们不知道。
  • 它对我来说很好@HimBromBeere。只是GetType() 的东西出了问题:)

标签: c# asp.net


【解决方案1】:

代码:

typeof(T).GetType()

返回你的类型 Type :)

你可以更简单地检查这个

typeof(T) == typeof(byte[])

【讨论】:

  • 谢谢你,我从来没有认为 GetType() 的东西是这个问题。
【解决方案2】:

你不需要GetType():

public static bool f<T>(T x) => typeof(T).Equals(typeof(byte[]));

【讨论】:

    猜你喜欢
    • 2016-09-04
    • 2017-08-06
    • 2018-12-23
    • 2020-01-11
    • 2020-10-05
    • 2011-06-13
    • 2017-08-08
    • 2015-04-11
    • 2022-01-16
    相关资源
    最近更新 更多