9.object类型,泛型,params关键字的使用

首先复习一下继承的作用,比如B继承A,那么B就可以使用A中的public,Protected方法,成员属性。

c#中所有的类型,如int,string等都继承object类型。

object是引用类型,int,string是值类型。

引用类型转值类型会影响效率,所以不推荐使用object,此时泛型更加合适。

 

1.我们的GetRandomValueFrom的目前代码如下:(这是用object类型的情况)

    public static object GetRandomValueFrom(params object [] values)
    {
        return values[Random.Range(0, values.Length)];
    }

注意,object前面需要加上params,不然不能转为int,float类型

测试代码如下:(这是用的object转int/string/float,引用类型转的值类型,影响效率)

        var intRandomValue = (int)GetRandomValueFrom(new int[] { 1, 2, 3 });
        var stringRandomValue = (string ) GetRandomValueFrom(new string[] { "asd", "asdsdf" });
        var floatRandomValue =(float ) GetRandomValueFrom(new float[] { 1.1f, 2.2f });

2.我们的GetRandomValueFrom的目前代码如下:(这是用泛型的情况)

    public static T GetRandomValueFrom<T>( T[] values)
    {
        return values[Random.Range(0, values.Length)];
    }

泛型的测试代码如下:(代码感觉简洁了许多,因为并不用强转)

        var intRandomValue = GetRandomValueFrom(new int[] { 1, 2, 3 });
        var stringRandomValue = GetRandomValueFrom(new string[] { "asd", "asdsdf" });
        var floatRandomValue = GetRandomValueFrom(new float[] { 1.1f, 2.2f });

3.params参数:即可变参数, 可以传任意个数的参数

    public static T GetRandomValueFrom<T>(params  T[] values)
    {
        return values[Random.Range(0, values.Length)];
    }

测试代码:(相比上面,没有了new int[]的步骤了,代码更简洁)

        var intRandomValue = GetRandomValueFrom(1, 2, 3 );
        var stringRandomValue = GetRandomValueFrom("asd", "asdsdf" );
        var floatRandomValue = GetRandomValueFrom( 1.1f, 2.2f );

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值