C#-转换-澄清
对于神童来说,这可能是一个非常基本的问题。但我怀疑能否处理好它。C#-转换-澄清,c#,C#,对于神童来说,这可能是一个非常基本的问题。但我怀疑能否处理好它。 在转换过程中,我们使用: int.Parse(某物) Convert.ToInt32或Convert.ToString()。。。。 (Int32)(someValue) 甚至我们用“as” 使用每一个的限制是什么?Convert.tonnn具有其重载所规定的限制;例如,您不能调用Convert.ToMyCustomType(因为该方法不存在)。您可以将几乎任何内容传递到Convert.ToString(或Con
在转换过程中,我们使用:
int.Parse(某物)
Convert.ToInt32或Convert.ToString()。。。。
(Int32)(someValue)
甚至我们用“as”
使用每一个的限制是什么?
Convert.tonnn
具有其重载所规定的限制;例如,您不能调用Convert.ToMyCustomType
(因为该方法不存在)。您可以将几乎任何内容传递到Convert.ToString
(或Convert.ToInt32
或任何其他Convert.tonnn
方法)中,但结果可能并不总是有意义。此外,如果该方法无法执行转换,它可能会抛出一个InvalidCastException
常规类型的大小写((int)someValue
)可用于存在显式转换的所有情况。如果您试图执行非法强制转换,您将收到一个异常
as
关键字可用于将类型强制转换为另一个(引用)类型(如果不可能,则返回null)。as
关键字不能与值类型一起使用(例如Int32
、Point
或DateTime
)
在我自己的代码中,我通常混合使用它们,但通常我遵循以下方案:
- 如果我想将字符串转换为数字类型,我通常使用该数字类型提供的
TryParse
- 如果我想将类实例强制转换为基类或接口,我通常使用
关键字作为
- 在其他情况下,我在
块中使用常规类型转换try/catch
Convert.tonnn
具有其重载所规定的限制;例如,您不能调用Convert.ToMyCustomType
(因为该方法不存在)。您可以将几乎任何内容传递到Convert.ToString
(或Convert.ToInt32
或任何其他Convert.tonnn
方法)中,但结果可能并不总是有意义。此外,如果该方法无法执行转换,它可能会抛出一个InvalidCastException
常规类型的大小写((int)someValue
)可用于存在显式转换的所有情况。如果您试图执行非法强制转换,您将收到一个异常
as
关键字可用于将类型强制转换为另一个(引用)类型(如果不可能,则返回null)。as
关键字不能与值类型一起使用(例如Int32
、Point
或DateTime
)
在我自己的代码中,我通常混合使用它们,但通常我遵循以下方案:
- 如果我想将字符串转换为数字类型,我通常使用该数字类型提供的
TryParse
- 如果我想将类实例强制转换为基类或接口,我通常使用
关键字作为
- 在其他情况下,我在
块中使用常规类型转换try/catch
int? myInt = someVar as int?;
Parse假定字符串作为参数,因此仅适用于将原始字符串表示形式转换为整数 Convert.ToInt32()将尝试将几乎任何对象转换为整数表示形式。如果表示形式不是有效的int(即使用值为55.3的浮点或包含单词的字符串),则会引发FormatException。如果整数太大,无法放入整数,则会发生OverflowException (int)是直接演员。它的基本意思是“我知道这个对象实际上是一个整数,就这样对待它”。如果对象实际上不是整数,则会得到无效的强制转换异常 最后,as的行为与直接强制转换相同,除非对象的类型不正确,否则它将为null赋值。不确定这如何应用于int,因为它是一个不可为null的类型,但肯定可以用于
int? myInt = someVar as int?;
Convert.ToInt32
可以从各种类型(DateTime、Decimal等)转换回整数,而int.Parse()
只能从字符串转换
如果您只是将字符串解析回整数,Convert.ToInt32
只是int.Parse
的别名,因此您最好改用int.Parse
关于强制转换,您不能将字符串强制转换为整数,您必须像上面提到的那样转换它
假设您正在使用一个数据库,并且有一个列在存储整数数据时被低效地声明为
varchar
。例如,在使用SqlDataReader时,不能执行(int)dr[“column”]
,必须使用int.Parse(dr[“column”].ToString())
。如果该列是数据库中的int
列类型,则可以使用强制转换:(int)dr[“column”]
Convert。ToInt32
可以从各种类型(日期时间、分贝)转换