请问在C#中如何定义一个类似于全局的静态对象?

lihuabo 2006-05-18 09:37:54
可以从一个form中设置数据,从另一个form中取出数据
...全文
990 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤剑 2006-06-06
  • 打赏
  • 举报
回复
public class Global
{
private static string _StaticTest;

public static string globalVariables
{
get{return this._StaticTest;}
set{this._StaticTest=value;}
}
}

访问的时候:
MessageBox.Show(Global.globalVariables);
liycumt 2006-06-06
  • 打赏
  • 举报
回复

public class login: System.Windows.Forms.Form
{ public string username=""
public form1()
{

}
//登陆
username=textBox1.Text.ToString();
Form2 f2=new Form2();
f2.form2Name=username;//username的值传给form2Name,在Form2中可以访问

}
public class Form2: System.Windows.Forms.Form

{ public string form2Name;
public Form2()
{

}

}

「已注销」 2006-06-06
  • 打赏
  • 举报
回复
使用静态类或者使用单件模式
shilei831115 2006-06-06
  • 打赏
  • 举报
回复
一剑飘香?莫哥?
socg 2006-06-06
  • 打赏
  • 举报
回复
我试过了,上面的代码可以访问,可能你顺序搞错了,ParameterSettings.Username = "aaaaaaaa"必须在MessageBox.Show(ParameterSettings.Username)前面!
上面提到 跨窗体取值 可以使用公有属性,如:

Form2 f=new Form2();
f.ShowDialog();
x=f.aaa;
  • 打赏
  • 举报
回复
怒了。实在不行就把东西写到txt里.然后读.或者写到access数据库里,再读.
lihuabo 2006-06-05
  • 打赏
  • 举报
回复
没有人指导一下吗?
sbsrg3000 2006-06-01
  • 打赏
  • 举报
回复
mark
yiming0755 2006-06-01
  • 打赏
  • 举报
回复
你是想用全局静态变量来做什么我不知道,我只告诉你一句,非必要的情况下,用全局静态变量是非常危险的一件事,设想一下,如果你在A窗体用这个属性做了一次判断,而刚好B窗体把这个变量修改了。。。。。。。。
lihuabo 2006-06-01
  • 打赏
  • 举报
回复
to yiming0755() :那我请教,那你在碰到这种跨窗体取值并且值要常变化,你怎么处理的?
lihuabo 2006-05-31
  • 打赏
  • 举报
回复
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx以及http://dev.csdn.net/article/84/84490.shtm中的这片文章,提到:
使用静态类该方式可以简单的理解为静态变量全局共享,通过下面代码能够比较清楚的理解,先来定义静态类,
public static class ParameterSettings
{
//公共静态变量
public static string Username = "Zhengzuo";
//私有静态变量
private static string userRole = "Administrators";
//私有静态变量
private static string password = "http://blog.csdn.net/zhzuo";
//内部属性
internal static string UserRole
{
get { return userRole; }
}
//公共属性
public static string Password
{
get { return password; }
private set { password = value; }
}
}


为了验证这段代码,我专门安装了VS 2005. 虽然编绎通过了没有问题,但还是没有满足我的要求。

写个很简单的例子:

public class form1: System.Windows.Forms.Form
{
public form1()
{
ParameterSettings.Username = "aaaaaaaa";
}
}


public class form1: System.Windows.Forms.Form
{
public form1()
{
MessageBox.Show(ParameterSettings.Username);
}
}




在form2中ParameterSettings.Username根本就不是form1中设置的值。我需要在一个form中设置值,在其它的form中访问,怎么办?
lihuabo 2006-05-21
  • 打赏
  • 举报
回复
好,我再看看
hnhl 2006-05-21
  • 打赏
  • 举报
回复
to:请问在C#中如何定义一个类似于全局的静态对象?
利用Singleton(单件)模式可以得到单一实例,并且提供了一个全局访问点,
例如:

public class Singleton
{
private Singleton _singleton;

/// <summary>
/// 私有构造器,这样可以使得客户类不能通过New 构造器实例化类
/// </summary>
private Singleton()
{

}
/// <summary>
/// 共有静态方法,创建单一实例,此方法非线程安全
/// </summary>
/// <returns></returns>
public static Singleton CreateInstance()
{
if (_singleton == null)
{
_singleton = new Singleton();
}
return _singleton;
}
}

public class TestClient
{
public static void Main()
{
Singleton s1 = Singleton.CreateInstance();
Singleton s2 = Singleton.CreateInstance();

if (s1.Equals(s2))
{
Console.WriteLine("s1 equals s2");
}

}
}
jerrygates 2006-05-21
  • 打赏
  • 举报
回复
类的定义中不能用static修饰的,是语法错误,只能有public private protected internal ,
还可以有sealed abstract ,属性的付值,也没有什么private 吧。只能说是password 在定义时用private
socg 2006-05-21
  • 打赏
  • 举报
回复
上面错了,是“不允许有访问修饰符、不允许有参数”
socg 2006-05-21
  • 打赏
  • 举报
回复
public class a
{
static int a1;
public static int A1
{
get { return a1; }
set { a1=value; }
}
static a()
{
a1=3;
}
}
静态构造函数不允许有访问修饰符、不允许有访问修饰符。执行的时间也是不却定的,但能保证你调用其成员时已经执行,且只会执行一次!
不知是不是楼住想要的答案!
socg 2006-05-21
  • 打赏
  • 举报
回复
属性也需要是静态的!
syeerzy 2006-05-21
  • 打赏
  • 举报
回复
晕,上面最上面最上面那种方式是最方便的,不过最好不要那么做,程序一大你都不知道这个值现在是什么了,因为哪里都能设置它...

至于说的语法错更荒唐.....2.0的语法拿来1.1里编译...你说出错不出错?
socg 2006-05-21
  • 打赏
  • 举报
回复
静态对象
构造函数可以为静态变量初始化
静态函数
lihuabo 2006-05-21
  • 打赏
  • 举报
回复
to hnhl(荒凉) :
能不能帮忙再详细一点,在你的这个类里面加上属性,如何去访问设置这些属性?
加载更多回复(23)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧