为什么不呢?存在ToFloat或Object.ToInt()

本文关键字:Object ToInt ToFloat 存在 为什么不 | 更新日期: 2023-09-27 18:15:23

Tostring()给出了实例的字符串表示?是因为我们觉得没有必要做任何从object到int/float的转换吗?

为什么不呢?存在ToFloat或Object.ToInt()

几乎任何对象都可以转换为字符串(在最坏的情况下,您可以将对象转换为其类名)。但是,对于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();

如果你能解释如何将System.Windows.Forms.TextBox转换为浮点数-我很想知道。

为什么任何Object都可以转化为Int32 ?不需要将此方法添加到Object本身。如果您认为对象可以转换为int,请使用适当的方法或强制转换对象:

object obj = 1;
int num = (int) obj;

obj = "1";
num = System.Convert.ToInt32(obj);

或者(如果明显是String)

string str = "1";
num = int.Parse(str);

但是,您可以使用convert类转换可以转换的对象(例如转换为Int):

        object o = new object();
        o = "1234";
        int i = Convert.ToInt32(o);

这是因为编译器不支持.toInt()而支持.toString()

可以将数字转换为字符串,但不能将字符串转换为数字。这就是为什么编译器不支持它。

您可以使用int.parseConvert.ToInt32来处理无效的数字部分(主要是null)

编译器可以处理Convert.ToInt32("abc")但不能处理("abc").toInt();

如果你不知道,有一个静态类Convert(它包含。tofloat和。toint等方法)