Tostring() 给出实例的字符串表示?是不是因为我们觉得不需要从 object 到 int/float 的任何转换?
6 回答
几乎任何对象都可以转换为字符串(在最坏的情况下,您可以将对象转换为其类名)。但是,您不能对 int 或 float 说同样的话。您如何将字符串“asdf”转换为浮点数?还是一个将游戏中的 NPC 表示为 int 的对象?
顺便说一句,如果您找到将任何对象转换为 int 的方法,没有人会阻止您编写自己的扩展方法:
public static class ObjectExtensions
{
public static int ToInt32(this object obj)
{
return 42;
}
}
// (...)
object o = new object();
int i = o.ToInt32();
如果您能解释如何将 a 转换System.Windows.Forms.TextBox
为浮点数 - 我很想知道。
但是,您可以使用 Convert 类转换可转换的对象(例如转换为 Int):
object o = new object();
o = "1234";
int i = Convert.ToInt32(o);
为什么 anyObject
应该转换为Int32
?无需将此方法添加到Object
自身。如果您认为一个对象可以转换为int
使用适当的方法或强制转换该对象:
object obj = 1;
int num = (int) obj;
或者
obj = "1";
num = System.Convert.ToInt32(obj);
或(如果它显然是 a String
)
string str = "1";
num = int.Parse(str);
这是因为编译器不支持.toInt()
和支持.toString()
您可以将数字转换为字符串,但不能将字符串转换为数字。这就是编译器不支持它的原因。
您可以使用,int.parse
或者Convert.ToInt32
可以处理无效的数字部分(主要是空值)
编译器会处理Convert.ToInt32("abc")
但不能处理("abc").toInt();
如果您不知道,这里有一个静态类 Convert(它包含 .ToFloat 和 .ToInt 等方法)