none
委派問題請教 RRS feed

  • 問題

  • 您好:參考

    http://chienliang-lien.blogspot.tw/2010/11/c.html

    實作 => 委派 如下,但缺都會出現

    未處理的例外狀況: System.NullReferenceException: 並未將物件參考設定為物件的執行個體。
       於 Del02.MyObject.Main(String[] args) 於 J:\MVC5_T\Ch03-LINQ\Del02\Program.cs: 行 40

    thisObj.Name

    錯誤,請問 這有何問題!

    另外,Predicate 是每個類別 都已經有指定了嗎?

    謝謝!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace Del02
    {
        class MyObject
        {
    
            public string Name { get; set; }
    
            public MyObject(string Name)
            {
                this.Name = Name;
            }
    
            /********************/
            static void Main(string[] args)
            {
    
    
                List<MyObject> objCollection = new List<MyObject>();
                objCollection.Add(new MyObject("Obj1"));
                objCollection.Add(new MyObject("Obj2"));
                objCollection.Add(new MyObject("Obj3"));
    
    
                //   Predicate<MyObject> thisDelegate = new Predicate<MyObject>(FindObj2); //儲存FindObj2
                //Predicate<MyObject> thisDelegate = FindObj2; //直接指定Method,不須NEW
                //MyObject thisObj = objCollection.Find(thisDelegate); //
    
                MyObject thisObj = objCollection.Find(
                           // ( MyObject targetObj ) => { return targetObj.Name.CompareTo("obj2") == 0;  }
                           targetObj =>   targetObj.Name.CompareTo("obj2" ) == 0
                    );
    
    
                Console.WriteLine(thisObj.Name);
                Console.Read();
    
            }
            /*
            public static bool FindObj2(MyObject obj)
            {
                return string.Compare("obj2", obj.Name, true) == 0; //找尋名稱為obj2
            }
            */
    
        }
    }

    2016年3月12日 下午 12:28

解答

  • (1) thisObj 有建立實體並指派給這個變數嗎 ?

    (2) Predicate<T> 委派是 .Net Framework 本身就有的, 參考 MSDN 文件


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 softballnow 2016年3月13日 下午 12:18
    2016年3月13日 上午 02:09
    版主
  • 您要找的應該是Obj2, 不是obj2, 所以找不到, 而程式沒有判斷是否有成功找到, 就直接使用thisObj, 所以就出現上述的錯誤了
    • 已標示為解答 softballnow 2016年3月13日 下午 12:18
    2016年3月13日 上午 07:12

所有回覆