参数可以是IEnumerable-如何更改代码? [英] Parameter can be IEnumerable - How to change code?
问题描述
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屋!