参数可以是IEnumerable-如何更改代码? [英] Parameter can be IEnumerable - How to change code?

查看:90
本文介绍了参数可以是IEnumerable-如何更改代码?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

resharper说,对于参数"gameObjects",参数可以是IEnumerable .如何将代码更改为此,这样做有什么好处?

resharper says Parameter can be IEnumerable, for the parameter "gameObjects". How do I change the code to this, and what's the benefit of doing so?

Transform GetClosestObject (Transform[] gameObjects) {
    Transform bestTarget = null;
    float closestDistanceSqr = Mathf.Infinity;
    Vector3 currentPosition = transform.position;
    foreach(Transform potentialTarget in gameObjects) {
        Vector3 directionToTarget = potentialTarget.position - currentPosition;
        float dSqrToTarget = directionToTarget.sqrMagnitude;
        if(dSqrToTarget < closestDistanceSqr) {
            closestDistanceSqr = dSqrToTarget;
            bestTarget = potentialTarget;
        }
    }

    return bestTarget;
}   

推荐答案

Resharper告诉您可以将gameObjects参数更改为IEnumerable类型,而不是数组类型.这样可以使方法签名更加灵活,因为它允许调用者输入数组或List或其他IEnumerable实现.

Resharper is telling you that you can change the gameObjects parameter to be of type IEnumerable rather than array. This results in a more flexible method signature as it allows the caller to input an array or List or other IEnumerable implementation.

请参见 https://www.jetbrains.com/help/resharper/ParameterTypeCanBeEnumerable.Global.html

IEnumerable.要使用,请添加

IEnumerable is found under the System.Collections.Generic namespace. To use, add

using System.Collections.Generic;

在文件顶部.

要修改代码,请更改

Transform GetClosestObject (Transform[] gameObjects) {

Transform GetClosestObject (IEnumerable<Transform> gameObjects) {

这篇关于参数可以是IEnumerable-如何更改代码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆