2015年9月10日星期四

[Unity3D] Array與List

在學習List<T>, 其實List<T>跟Array有點相似所以問了一下Google大神,發現兩個不錯的說明

[C#] 陣列 & List<T>
https://kw0006667.wordpress.com/2013/04/03/c-陣列-listt/
下面的 code主要是抄考這篇的,只是弄了一個Unity的版本,用上Lambda真的廷方便的呀,Lumbda也是最近才學習的!左邊是參數(parameters), 右邊則是指令(instructions),這樣就不用開一個有名的function那麽麻煩!
students.Sort((x, y) => { return -x.Score.CompareTo(y.Score); });

例如這一句,(x, y)是參數,reutrn -x.Score.CompareTo(y.Score) 則是指令,這樣就可以由大到小排序了~

Array與List
http://sharecoder.blogspot.hk/2012/10/arraylist.html
//Array使用連續記憶體空間,List【不需要】使用連續記憶體空間。//
重點呀!長知識了~

好了看看測試的程式

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Test: MonoBehaviour {
 
 public struct Student
 {
  public string Name;
  public int Score;

  public Student(string name, int score)
  {
   this.Name = name;
   this.Score = score;
  }
 }
 
 void Start()
 {
  List students = new List()
  { 
   new Student("Tim", 80),
   new Student("Jimmy", 76),
   new Student("David", 92),
   new Student("Jason", 57),
   new Student("Amy", 40)
  };
  
  // 利用 Lambda 運算式,由大到小排序
  students.Sort((x, y) => { return -x.Score.CompareTo(y.Score); });
  
  foreach (var item in students)
  {
   Debug.Log(item.Name + " : " + item.Score);
  }
 }
}

結果:

2 則留言:

  1. 『右邊是參數(parameters), 左邊則是指令(instructions)』 <= 這句話好像寫反了。

    回覆刪除