黑马程序员技术交流社区

标题: 关于 不同类之间 访问 实例的属性问题 [打印本页]

作者: 王继光    时间: 2012-6-12 13:10
标题: 关于 不同类之间 访问 实例的属性问题
本帖最后由 王继光 于 2012-6-12 13:15 编辑

如题,, 例子:
//////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 登陆界面
{
    class UserInfo
    {
        string name;

        public string Name
        {
            get { return name; }      
        }

        string passWord;

        public string PassWord
        {
            get { return passWord; }
            set { passWord = value; }
        }

        public UserInfo(string name)
        {
            this.name = name;
        }

        public UserInfo()
        {
        }

    }
}
////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace 登陆界面
{

    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            UserInfo zsInfo = new UserInfo("admin");
            zsInfo.PassWord = "888888";  
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
///////////////////////////////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 登陆界面
{
    public partial class Form1 : Form
    {

       private int mistake = 0;

        public Form1()
        {

            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            UserInfo zsInfo = new UserInfo("admin");
            zsInfo.PassWord = "888888";
            
           string getUserName = txtUserName.Text;
            string getUserPassWord = txtPassWord.Text;


            if (getUserName.Equals(zsInfo.Name) && getUserPassWord.Equals(zsInfo.PassWord))
            {
                MessageBox.Show("登陆成功!");
            }
            else
                {
                    mistake++;
                     if ( mistake >= 3)
                     {
                    Application.Exit();
                     }
               
                txtPassWord.Text = "";
                txtUserName.Text = "";
                string strMistake = String.Format("用户名或密码不正确,错误次数为{0},3次错误,程序退出, 请重新输入!", mistake);
                MessageBox.Show(strMistake,
                    "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);

                 }

        }
    }
}
///////////////////////////////////////////



假如, 我把  红色 部分  放在  紫色 那里,,,, 那么  蓝色部分 该怎么 访问 zsInfo 这个实例 的值????
作者: 黑马-许泽宇    时间: 2012-6-12 13:17
放那里,你红色部分的那块就没有实例化了.那就访问不了了.
必须实例化才能使用另一个类的方法和属性,.
好像静态的变量可以直接使用
作者: 赵力    时间: 2012-6-12 17:51
  因为作用域的问题直接访问不了吧,就像你访问不了定义的类中private 修饰的变量一样。要想访问的话得把 变量作用域定义到可以跨类访问的级别。或者给他定义get属性,就像定义类中的一样。

作者: 王继光    时间: 2012-6-12 18:00
赵力 发表于 2012-6-12 17:51
因为作用域的问题直接访问不了吧,就像你访问不了定义的类中private 修饰的变量一样。要想访问的话得把  ...

楼上的2位同学,  大致原理我是清楚的, 我是问 实现方法!!  假如确实有这样的情况发生, 最好的解决方法是什么?   




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2