黑马程序员_关于对象和指向该对象的变量的有关问题

来源:互联网 发布:淘宝店招收藏店铺代码 编辑:程序博客网 时间:2024/05/20 15:09

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

在学习C#面向对象基础视频的练习聊天机器人的部分的时候,老师介绍了一个变量指向有关对象的问题,现在我把这个问题总结一下:

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


namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Robert   r1 = new Robert();
            r1.Name = "小I";
            r1.Eat(5);
          

           Robert  r2=new Robert();

            r2.Name = "小J";
            r2.Eat(8);
          

     Console.WriteLine("请选择机器人:1-小I,2-小J");

      

         Robert  r;

          string str=Console.ReadLine();

         if(str=="1")

{

          r=r1;                 //r 指向r1指向的对象

        }

          else

        {

         r=r2;

         }


            while(true)
            {
              string str1= Console.ReadLine();
                r.Speak(str1);      
            }

            Console.ReadKey();
        }
    }


    class Robert
    {
        public string Name { get; set; }
        private int FullLevel { get; set; }
        public void SayHello()
        {
            Console.WriteLine("我是{0}",Name);
        }
        public void Eat(int foodCount)
        {
            if(FullLevel>100)
            {
                return;
            }
            FullLevel = FullLevel + foodCount;        
        }
        public void Speak(  string str)
        {
            if (FullLevel <= 0)
            {
                Console.WriteLine("饿死了,不说了!");
                return;
            }
              if(str.Contains("名字")||str.Contains("姓名"))
              {
                  this.SayHello();
              }
              else if (str.Contains("女朋友"))
              {
                  Console.WriteLine("还小呢,不考虑!");
              }
              else
              {
                  Console.WriteLine("听不懂!");
              }
              FullLevel--;
            
        }
       
    }

}


注释的红字可以用一下来解释:

首先,这两句代码的含义如下图所示 Robert     r1 =  new Robert();

                                                           Robert     r2 =  new Robert();

                  

Robert类型的变量r1指向Robert对象小I,Robert类型的变量r2指向Robert对象小J

那么这句代码的含义就很好解释了:r=r1;   见下图

           


Robert类型的变量r指向Robert对象小I,也可以说是指向了r1指向的对象。


----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net







原创粉丝点击