首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请教一个对象或委托,用=和用new有什么区别

2013-11-25 
请问一个对象或委托,用和用new有什么区别?比如下面的代码:using Systemusing System.Collections.Generi

请问一个对象或委托,用=和用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# .NET 委托 指针 堆栈
[解决办法]
其实是一样的。
引用也会变。

SaySth s = new SaySth(Shout);
SaySth s1 = s;
s = Cry;
Console.WriteLine(Object.Equals(s1, s)); // false

热点排行