这可能是微不足道的,但我想不出更好的方法来做到这一点。我有一个 COM 对象,它返回一个变体,它成为 C# 中的一个对象。我可以把它变成 int 的唯一方法是
int test = int.Parse(string.Format("{0}", myobject))
有没有更清洁的方法来做到这一点?谢谢
你有几个选择:
(int)’ 演员表操作员。如果对象在继承层次结构中的某个级别 已经是 整数,或者定义了隐式转换,则可以使用。
(int)
int.Parse()/int.TryParse()’用于从未知格式的字符串转换。
int.Parse()/int.TryParse()
int.ParseExact()/int.TryParseExact()‘用于从特定格式的字符串转换
int.ParseExact()/int.TryParseExact()
Convert.ToInt32() ‘ 用于转换未知类型的对象。它将使用显式和隐式转换或 IConvertible 实现(如果已定义)。
Convert.ToInt32()
as int?’注意“?”。该as运算符仅用于引用类型,因此我使用了“?” 表示一个Nullable<int>。” as” 操作符的工作方式类似Convert.To____(),但认为TryParse()而不是Parse():如果转换失败,它会返回null而不是抛出异常。
as int?
as
Nullable<int>
Convert.To____()
TryParse()
Parse()
null
其中,(int)如果对象真的只是一个装箱的整数,我会更喜欢。否则Convert.ToInt32()在这种情况下使用。
请注意,这是一个非常 笼统 的答案:我想对达伦·克拉克的回应给予一些关注,因为我认为它在解决这里的 细节 方面做得很好,但是来晚了,还没有投票。无论如何,他得到了我对“接受的答案”的投票,还推荐了 (int),指出如果它失败(int)(short)可能会起作用,并建议您检查调试器以找出实际的运行时类型。
(int)(short)