日期:2014-05-17  浏览次数:20829 次

请问一个对象或委托,用=和用new有什么区别?
比如下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DelDemo
{
    /// <summary>
    /// 这是一个委托,让某人说某句话
    /// </summary>
    /// <param name="name">名字</param>
    /// <param name="words">要说的话</param>
    internal delegate void SaySth(string name,string words);
    class Program
    {
        static void Main(string[] args)
        {
            SaySth s = new SaySth(Shout);
            s("GT", "good luck to me!");
            Console.WriteLine(s.GetHashCode());
            s = Cry;
            s("GT", "aewfawf");
            Console.WriteLine(s.GetHashCode());
            Console.ReadKey();
        }
        /// <summary>
        /// 喊话
        /// </summary>
        /// <param name="name"></param>
        /// <param name="words"></param>
        static void Shout(string name, string words)
        {
            Console.WriteLine("i'm {0},and i said {1}", name, words);
            Console.ReadKey();
        }
        /// <summary>
        /// 哭泣
        /// </summary>
        /// <param name="name"></param>
        /// <param name="why"></param>
        static void Cry(string name, string why)
        {
            Console.WriteLine("i'm {0} , i'm crying bacuse {1}", name, why);
            Console.ReadKey();
        }

    }
}



s的第一次实例化是new的,第二次是直接=,这样有什么区别吗?
我理解的是结果都是一样,但是s在第二次如果再new,内存地址会发生变化。
C#