铸造和解析之间的区别

时间:2011-05-17 07:57:23

标签: .net parsing casting

我一直在研究一些代码。现在我刚刚使用了关键字as-is而没有真正了解它们。所以这是我的问题

Casting和Parsing有什么区别?

UserAdapter.GetIdAndUserTypeByEmailAndPassword(Email, Password).Rows[0]["UserType"] as String - >这是铸造还是解析?

(String) UserAdapter.GetIdAndUserTypeByEmailAndPassword(Email, Password).Rows[0]["UserType"] - >这是Casting还是解析?

UserAdapter.GetIdAndUserTypeByEmailAndPassword(Email, Password).Rows[0]["UserType"].ToString()
x.ToString()(String) x之间有什么区别?

3 个答案:

答案 0 :(得分:11)

  

Casting和Parsing有什么区别?

那些是无关的。

Casting正在改变变量的类型。

解析是'检查'字符串并将其逻辑值分配给某个变量。

(附加:嗯,它们在某种意义上是相关的,因为从远处都可以用来'转换'数据,但是,只有在解析的情况下,才真正转换数据)

  

UserAdapter.GetIdAndUserTypeByEmailAndPassword(Email, Password).Rows[0]["UserType"] as String

     

这是Casting还是解析?

如果类型不可转换(看here),这种特殊类型的转换不会失败,但会让你null

  

(String) UserAdapter.GetIdAndUserTypeByEmailAndPassword(Email, Password).Rows[0]["UserType"]

     

这是Casting还是解析?

这又是强制转换,但如果表达式不是string类型,则会抛出异常。

  

x.ToString()和(String)x?

之间有什么区别

x.ToString()将尝试在对象x上调用ToString()。

(String) x会尝试将x转换为字符串,如果x不是字符串,则会失败。

答案 1 :(得分:0)

区别在于:

char a = '3';
int number = 30;
if(number % (int) a == 0) System.out.println(true);
else System.out.println(false);

由于我们正在进行类型转换(只是更改数据类型),因此上面的代码将显示false。

if(number % Integer.parseInt(String.valueOf(a)) == 0) System.out.println(true);
else System.out.println(false);

现在上面的代码将打印true,因为我们正在解析(逻辑设置)值。

有什么区别(请参见本示例):

int value = 11;
char a = (char) value;
System.out.println(a);  // result is -> 

正确的方式:

int value = 11;
char a = String.valueOf(value).toCharArray()[0];
System.out.println(a);

为什么因为char只能存储1个字符(当然!)。

摘要-类型转换只是在更改数据类型,而解析则意味着逻辑上设置值并生成期望的结果,而不是这样。

答案 2 :(得分:-1)

相关问题