Casting vs Converting an object toString, when object really is a string

后端 未结 9 2082
终归单人心
终归单人心 2020-11-28 06:13

This isn\'t really an issue, however I am curious. When I save a string in lets say an DataRow, it is cast to Object. When I want to use it, I have to cast it ToString. As f

9条回答
  •  情歌与酒
    2020-11-28 06:41

    If you know it is a String then by all means cast it to a String. Casting your object is going to be faster than calling a virtual method.

    Edit: Here are the results of some benchmarking:

    ============ Casting vs. virtual method ============
    cast 29.884 1.00
    tos  33.734 1.13
    

    I used Jon Skeet's BenchmarkHelper like this:

    using System;
    using BenchmarkHelper;
    
    class Program
    {
        static void Main()
        {
            Object input = "Foo";
            String output = "Foo";
    
            var results 
               = TestSuite.Create("Casting vs. virtual method", input, output)
                .Add(cast)
                .Add(tos)
                .RunTests()
                .ScaleByBest(ScalingMode.VaryDuration);
    
            results.Display(ResultColumns.NameAndDuration | ResultColumns.Score,
                    results.FindBest());
        }
    
        static String cast(Object o)
        {
            return (String)o;
        }
    
        static String tos(Object o)
        {
            return o.ToString();
        }
    }
    

    So it appears that casting is in fact slightly faster than calling ToString().

提交回复
热议问题