相关疑难解决方法(0)

一般类型转换没有冒外线的风险

我正在研究一个控件,它可以采用许多不同的数据类型(任何实现IComparable的东西).

我需要能够将这些与传入的另一个变量进行比较.

如果主数据类型是DateTime,并且我传递了一个String,我需要

  • 尝试将String转换为DateTime以执行日期比较.
  • 如果String无法转换为DateTime,则执行String比较.

所以我需要一种通用的方法来尝试从任何类型转换为任何类型.很简单,.Net为我们提供了TypeConverter类.

现在,我可以做的最好的事情是确定String是否可以转换为DateTime是使用异常.如果ConvertFrom引发异常,我知道我不能进行转换并且必须进行字符串比较.

以下是我得到的最好的:

        string theString = "99/12/2009";
        DateTime theDate = new DateTime ( 2009, 11, 1 );

        IComparable obj1 = theString as IComparable;
        IComparable obj2 = theDate as IComparable;

        try
        {
            TypeConverter converter = TypeDescriptor.GetConverter ( obj2.GetType () );
            if ( converter.CanConvertFrom ( obj1.GetType () ) )
            {
                Console.WriteLine ( obj2.CompareTo ( converter.ConvertFrom ( obj1 ) ) );
                Console.WriteLine ( "Date comparison" );
            }
        }
        catch ( FormatException )
        {
            Console.WriteLine ( obj1.ToString …
Run Code Online (Sandbox Code Playgroud)

c# type-conversion

7
推荐指数
2
解决办法
6269
查看次数

标签 统计

c# ×1

type-conversion ×1