C#如何在一个cs文件中用到另一个cs文件中的变量的值?

时间:2022-08-31 08:14:53
在1.cs中定义了这个变量所在的类,代码如下:

 public class FlowSize
    {
        public long up;
        public long down;
        public long flow;
        public long daysum;
        public long monthsum;
        public FlowSize()
        {
            this.down = 0;
            this.up = 0;
        }
        public void clear()
        {
            this.down = 0;
            this.up = 0;
        }
        public bool Isempty()
        {
            if ((this.down == 0) && (this.up == 0)) return true;
            else return false;
        }
        public static bool WriteDebugLog = true;
        public static int TimeWaitCloseMainWindow = 30;
        public static int TimeWaitClose = 30;
        public static int TimeWaitKillProcess = 30;
    }

在2.cs中实例化了这个类,实例名为grab和grab_flow,代码如下:

 public static void Refresh_TempData(FlowSize grab_flow)
        {
            DateTime time = DateTime.Now;
            string dbpath = Application.StartupPath + @"\FlowDB.mdb";
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + dbpath);
            long flow = 0;
            FlowSize grab, real;
            grab = new FlowSize();
            real = new FlowSize();
            try
            {
                con.Open();
                OleDbCommand cmd = con.CreateCommand();
                cmd.CommandText = "select * from FlowPerMonth where cstr(YearMonth) = '" + GetStandardYM(time)+ "'";
                
                OleDbDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    flow = Convert.ToInt64(reader["User_GB"].ToString()) * num + Convert.ToInt64(reader["User_B"].ToString());
                    
                }
                reader.Close();
                cmd.CommandText = "select * from FlowPerday where cstr(FlowData) ='" + GetStandardYMD(time) + "'";
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    grab.up += Convert.ToInt64(reader["Grab_up_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_up_B"].ToString());
                  
                    grab.down += Convert.ToInt64(reader["Grab_down_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_down_B"].ToString());
                    
                }
                reader.Close();
                con.Close();
                UpdateWindow.UpdateFlowMonth(flow+grab_flow.up+grab_flow.down);
               
                UpdateWindow.UpdateFlowPerDay(grab.up+grab_flow.up, grab.down+grab_flow.down);
            }
            catch (Exception ee)
            {
                Flowfairy.FairyLog.WriteLog(ee.ToString());
            }
        }

想在3.cs中带参访问某个php文件,参数是2.cs中grab.up+grab_flow.up+grab.down+grab_flow.down的结果,该怎样处理?

12 个解决方案

#1


该回复于2012-04-20 13:08:52被版主删除

#2


Import 2.cs所在的目录
调用处:
参数=c2.grab.up+c2.grab_flow.up+c2.grab.down+c2.grab_flow.down

#3


你还没搞清许多基本概念啊?
Refresh_TempData(FlowSize grab_flow)
这个grab_flow明明是个参数来的

FlowSize grab, real;
这个grab只是个局部变量

我上面那样调用是不对的了。

#4


本人才疏学浅,过来学习一下!

#5


头晕目眩,不知道要搞什么

#6


可以去看看

委托+事件   

#7


看看能不能发炎

#8


在3.cs里直接调用显然是不行的,你要先理解什么叫局部变量以及这个变量的作用域是哪儿。如果必须要用的话,可以在2.cs里建立一个静态类,把要传递的值存在静态类里,然后在3.cs里引用2.cs的命名空间后直接使用。

#9


将一个CS中的你想得到的变量 设置为共有变量 然后给他赋值  然后再另一个cs中 实例化出来 然后就可以调用这个共有的变量了

#10


将cs变成一个类,引用的值写成属性,就行了

#11


*.cs知识用来存放代码的文件,注意,是文件。
类是另一个概念,一个.cs文件里面可以有多个类,一个类也可以分别放在多个.cs文件中。类名可以和.cs文件名毫无关系。

类之间的访问,是命名空间以及访问修饰符的问题。

要真正把这些东西理解了,就不会有这样的问题了。

#12


1.cs改为

 public class FlowSize
    {
        public long up;//数据库中的数据均为整数,故用long
        public long down;
        public static long flows;
        public static long getflows()
        {
            return flows;
        }
        public long daysum;
        public long monthsum;
        public FlowSize()
        {
            this.down = 0;
            this.up = 0;;
        }
        public void clear()
        {
            this.down = 0;
            this.up = 0;
        }
        public bool Isempty()
        {
            if ((this.down == 0) && (this.up == 0)) return true;
            else return false;
        }
    }

2.cs改为

public static void Refresh_TempData(FlowSize grab_flow)//grab_flow是类FlowSize的实例
        {
            DateTime time = DateTime.Now;//time是当前时间
            string dbpath = Application.StartupPath + @"\FlowDB.mdb";//dbpath是数据库的路径,即和应用程序在同一目录下的FlowDB.mdb文件
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + dbpath);//创建到数据库的链接
            long flow = 0;
            FlowSize grab, real;//grab, real类FlowSize的实例
            grab = new FlowSize();
            real = new FlowSize();//初始化grab和real
            try
            {
                con.Open();//尝试打开数据库
                OleDbCommand cmd = con.CreateCommand();//cmd为创建数据库命令的对象
                cmd.CommandText = "select * from FlowPerMonth where cstr(YearMonth) = '" + GetStandardYM(time)+ "'";
                // cmd.CommandText是要执行的SQL语句
                OleDbDataReader reader = cmd.ExecuteReader();//reader为执行数据库命令的对象
                if (reader.Read())//若要执行的命令读取成功
                {
                    flow = Convert.ToInt64(reader["User_GB"].ToString()) * num + Convert.ToInt64(reader["User_B"].ToString());
                    //从数据表FlowPerMonth中读取User_GB和User_B字段的值并相加,得到用户目前当月的总流量
                }
                reader.Close();//关闭命令
                cmd.CommandText = "select * from FlowPerday where cstr(FlowData) ='" + GetStandardYMD(time) + "'";
                reader = cmd.ExecuteReader();
                while (reader.Read())//若读取成功则更新grab.up和grab.down的值
                {
                    grab.up += Convert.ToInt64(reader["Grab_up_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_up_B"].ToString());
                    //从数据表FlowPerday中读取Grab_up_GB和Grab_up_B字段的值并相加,得到目前当天的上传流量
                    grab.down += Convert.ToInt64(reader["Grab_down_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_down_B"].ToString());
                    //从数据表FlowPerday中读取Grab_down_GB和Grab_down_B字段的值并相加,得到目前当天的下载流量
                }
                reader.Close();
                con.Close();//关闭数据库连接
                UpdateWindow.UpdateFlowMonth(flow+grab_flow.up+grab_flow.down);
                //当月流量为目前当月的总流量与上传流量和下载流量之和,上传流量和下载流量分别是数据库中的数据加上实时改变的流量
                UpdateWindow.UpdateFlowPerDay(grab.up+grab_flow.up, grab.down+grab_flow.down);
                //当天流量为上传流量和下载流量之和,他们分别是数据库中的数据加上实时改变的流量
                FlowSize.flows = grab.up+grab_flow.up+grab.down+grab_flow.down;
                FlowSize.getflows();
            }
            catch (Exception ee)
            {
                Flowfairy.FairyLog.WriteLog(ee.ToString());
            }
        }

#1


该回复于2012-04-20 13:08:52被版主删除

#2


Import 2.cs所在的目录
调用处:
参数=c2.grab.up+c2.grab_flow.up+c2.grab.down+c2.grab_flow.down

#3


你还没搞清许多基本概念啊?
Refresh_TempData(FlowSize grab_flow)
这个grab_flow明明是个参数来的

FlowSize grab, real;
这个grab只是个局部变量

我上面那样调用是不对的了。

#4


本人才疏学浅,过来学习一下!

#5


头晕目眩,不知道要搞什么

#6


可以去看看

委托+事件   

#7


看看能不能发炎

#8


在3.cs里直接调用显然是不行的,你要先理解什么叫局部变量以及这个变量的作用域是哪儿。如果必须要用的话,可以在2.cs里建立一个静态类,把要传递的值存在静态类里,然后在3.cs里引用2.cs的命名空间后直接使用。

#9


将一个CS中的你想得到的变量 设置为共有变量 然后给他赋值  然后再另一个cs中 实例化出来 然后就可以调用这个共有的变量了

#10


将cs变成一个类,引用的值写成属性,就行了

#11


*.cs知识用来存放代码的文件,注意,是文件。
类是另一个概念,一个.cs文件里面可以有多个类,一个类也可以分别放在多个.cs文件中。类名可以和.cs文件名毫无关系。

类之间的访问,是命名空间以及访问修饰符的问题。

要真正把这些东西理解了,就不会有这样的问题了。

#12


1.cs改为

 public class FlowSize
    {
        public long up;//数据库中的数据均为整数,故用long
        public long down;
        public static long flows;
        public static long getflows()
        {
            return flows;
        }
        public long daysum;
        public long monthsum;
        public FlowSize()
        {
            this.down = 0;
            this.up = 0;;
        }
        public void clear()
        {
            this.down = 0;
            this.up = 0;
        }
        public bool Isempty()
        {
            if ((this.down == 0) && (this.up == 0)) return true;
            else return false;
        }
    }

2.cs改为

public static void Refresh_TempData(FlowSize grab_flow)//grab_flow是类FlowSize的实例
        {
            DateTime time = DateTime.Now;//time是当前时间
            string dbpath = Application.StartupPath + @"\FlowDB.mdb";//dbpath是数据库的路径,即和应用程序在同一目录下的FlowDB.mdb文件
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + dbpath);//创建到数据库的链接
            long flow = 0;
            FlowSize grab, real;//grab, real类FlowSize的实例
            grab = new FlowSize();
            real = new FlowSize();//初始化grab和real
            try
            {
                con.Open();//尝试打开数据库
                OleDbCommand cmd = con.CreateCommand();//cmd为创建数据库命令的对象
                cmd.CommandText = "select * from FlowPerMonth where cstr(YearMonth) = '" + GetStandardYM(time)+ "'";
                // cmd.CommandText是要执行的SQL语句
                OleDbDataReader reader = cmd.ExecuteReader();//reader为执行数据库命令的对象
                if (reader.Read())//若要执行的命令读取成功
                {
                    flow = Convert.ToInt64(reader["User_GB"].ToString()) * num + Convert.ToInt64(reader["User_B"].ToString());
                    //从数据表FlowPerMonth中读取User_GB和User_B字段的值并相加,得到用户目前当月的总流量
                }
                reader.Close();//关闭命令
                cmd.CommandText = "select * from FlowPerday where cstr(FlowData) ='" + GetStandardYMD(time) + "'";
                reader = cmd.ExecuteReader();
                while (reader.Read())//若读取成功则更新grab.up和grab.down的值
                {
                    grab.up += Convert.ToInt64(reader["Grab_up_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_up_B"].ToString());
                    //从数据表FlowPerday中读取Grab_up_GB和Grab_up_B字段的值并相加,得到目前当天的上传流量
                    grab.down += Convert.ToInt64(reader["Grab_down_GB"].ToString()) * num + Convert.ToInt64(reader["Grab_down_B"].ToString());
                    //从数据表FlowPerday中读取Grab_down_GB和Grab_down_B字段的值并相加,得到目前当天的下载流量
                }
                reader.Close();
                con.Close();//关闭数据库连接
                UpdateWindow.UpdateFlowMonth(flow+grab_flow.up+grab_flow.down);
                //当月流量为目前当月的总流量与上传流量和下载流量之和,上传流量和下载流量分别是数据库中的数据加上实时改变的流量
                UpdateWindow.UpdateFlowPerDay(grab.up+grab_flow.up, grab.down+grab_flow.down);
                //当天流量为上传流量和下载流量之和,他们分别是数据库中的数据加上实时改变的流量
                FlowSize.flows = grab.up+grab_flow.up+grab.down+grab_flow.down;
                FlowSize.getflows();
            }
            catch (Exception ee)
            {
                Flowfairy.FairyLog.WriteLog(ee.ToString());
            }
        }