gpt4 book ai didi

c# - 这个对象是一个整型。我可以在不到五行的代码中得到它的值(value)吗?

转载 作者:太空狗 更新时间:2023-10-30 00:01:11 26 4
gpt4 key购买 nike

我有一个数据读取器。我想将其中的值与值 42 进行比较。我知道它是一个整数类型(例如,MySQL 调用的 INTTINYINTSMALLINTMEDIUMINTBIGINTJUMBODELUXEINT 等)。我不想将实际类型硬连接到 C# 代码中。我想到的最好的是

object x = reader.GetValue(i);
uint k = x is byte ? (byte) x
: x is short ? (uint) (short) x
: x is ushort ? (ushort) x
: x is int ? (int) (int) x
: (uint) x;
if (k == 42) { ... }

这看起来非常冗长。我尝试使用 Equals,但具有相同值的不同整数类型在测试时似乎并不相等。

有没有更好的办法?

最佳答案

只是检查 Convert.ToUInt32(object) ... 是的,它工作正常:

using System;

class Test
{
static void Main()
{
Check((byte)10);
Check((short)10);
Check((ushort)10);
Check((int)10);
Check((uint)10);
}

static void Check(object o)
{
Console.WriteLine("Type {0} converted to UInt32: {1}",
o.GetType().Name, Convert.ToUInt32(o));
}
}

换句话说,您的代码可以是:

object x = reader.GetValue(i);
uint k = Convert.ToUInt32(x);
if (k == 42) { ... }

或者,鉴于所有 uint 都可以表示为 long,如果您使用的是数据读取器,您可以尝试 reader.GetInt64(i) 吗?我不知道转换是否会为您完成,但可能值得一试。

关于c# - 这个对象是一个整型。我可以在不到五行的代码中得到它的值(value)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com