泛型问题

时间:2011-04-29 09:15:45

标签: c# generics

我正在上课,所以我可以在扫雷中作弊,目前正在建立一些仿制药......但我有点卡住了。我想返回一个int,但我该如何转换呢?

public T ReadMemory<T>(uint adr)
{
    if( address != int.MinValue )
        if( typeof(T) == typeof(int) )
            return Convert.ChangeType(MemoryReader.ReadInt(adr), typeof(T));
        else
            MessageBox.Show("Unknown read type");
}

3 个答案:

答案 0 :(得分:7)

您需要将调用的返回值转换为ChangeType

return (T)Convert.ChangeType(MemoryReader.ReadInt(adr), typeof(T)); 

答案 1 :(得分:1)

尝试施放:

return (T)Convert.ChangeType(MemoryReader.ReadInt(adr), typeof(T));

答案 2 :(得分:1)

我试图修复编译器错误。但我不知道这是否正是你所寻找的。

您必须将结果转换为T

return (T)Convert.ChangeType( MemoryReader.ReadInt( adr ), typeof( T ) );

并且您必须在条件失败时返回值:

return default( T );

这导致:

public T ReadMemory<T>( uint adr )
{
    if ( adr != int.MinValue )
    {
        if ( typeof( T ) == typeof( int ) )
        {
            return (T)Convert.ChangeType( MemoryReader.ReadInt( adr ), typeof( T ) );
        }
        else
        {
            System.Windows.Forms.MessageBox.Show( "Unknown read type" );
        }
    }
    return default( T );
}