我一直在研究一些代码。现在我刚刚使用了关键字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
之间有什么区别?
答案 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)