社区
C#
帖子详情
如何定义一个全局的结构体
zywhao
2007-02-28 05:45:08
如何定义一个全局的结构体,例如
public struct aaa
{
public string cn;
public string rs;
}
public aaa g;
然后我想让这个g 在任何窗体或类中都可以直接输入g. 就可以将 cn 或 rs 找出.
或者定义一个函数,就可以在任何窗体或类中直接使用.
在Vb中可以添加一个模块,将上面的代码写在模块中就可以了,但在c#中如何来作呢.
...全文
1714
10
打赏
收藏
如何定义一个全局的结构体
如何定义一个全局的结构体,例如 public struct aaa { public string cn; public string rs; } public aaa g; 然后我想让这个g 在任何窗体或类中都可以直接输入g. 就可以将 cn 或 rs 找出. 或者定义一个函数,就可以在任何窗体或类中直接使用. 在Vb中可以添加一个模块,将上面的代码写在模块中就可以了,但在c#中如何来作呢.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zero_3
2007-04-10
打赏
举报
回复
很不错的问题解答!
zywhao
2007-03-02
打赏
举报
回复
谢谢各位的指点,我又学到了很多..
谢谢各位的回复!!!!!
初学C#问到些简单弱智问题,!!见笑了!!!
syeerzy
2007-03-01
打赏
举报
回复
不要说VB中可以...JS中可以....D++或者E#中可以.....
老语言中可以而新语言不可以或不推荐的做法你觉得是历史的倒退还是进步更合逻辑???
不要把VB和ASP的坏习惯带到面向对象的C#里来.
syeerzy
2007-03-01
打赏
举报
回复
1
你这个全局的结构体是干吗用的,一个常量么?????
如果你要写g.cm(真不知道你为什么一定要前面不带东西.....) ,那么就不要用你上面的定义,建个静态类得了.
public static class g
{
public static string cn;
public static string rs;
}
这是惟一让你可以写 g.cn,g.rs 来访问的了.
问题是你已经在错误的路子上了,应该及早走回来. 定义静态或非静态, 结构体或类,关键在于模型和逻辑,而不是根据你对语法写法的喜好来决定.
如果你希望这是个一个全局的结构体,你可以用一个Singleton来实现,也可以简单的在某个类内定义一个静态属性指向该 结构体 , 但是,访问的方式必须是按照语法的规定来访问,而不是"我喜好#####".
如果你这个结构体不是只读的,或者它本身含有修改自己内部字段的方法,那最好现在就把一切思路收回去,重新设计你的方案.
一个全局的,非只读的,结构体,在一个程序中出现,是一种深深的不幸!!!!
step_123
2007-03-01
打赏
举报
回复
可以如下定义:
namespace BizService
{
public class Class1
{
public struct aaa
{
public string cn;
public string rs;
}
}
public class temp
{
public static Class1.aaa tmp;
}
}
然后在page页中调用:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//方式一:
BizService.Class1.aaa a;
a.cn;
//方式二:
BizService.temp.tmp.cn;
}
}
he_8134
2007-02-28
打赏
举报
回复
如果你是做WinForm程序,在解决方案浏览器中打开Program.cs
static class Program
{
public aaa g;////////看到了么???
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
nine_suns99
2007-02-28
打赏
举报
回复
我认为最好放弃这些非OO的思想
用类的静态属性嘛!
zywhao
2007-02-28
打赏
举报
回复
假如我将这个g声明在了 form1 中了,那在form2中使用时,那还要写上form1.g.cn才可以,而不能直接写g.cn
zywhao
2007-02-28
打赏
举报
回复
写在什么位置呢.. 因为我想在任何窗体或类中都可以直接使用!!
例如 在结构体g中存放着连接数据库的信息, 即我想只进行一次连接,以后就可以直接在程序中写入g.cn (假如cn 就是connect,已经连接好了)
谢谢回复
北京的雾霾天
2007-02-28
打赏
举报
回复
用Static声明:
public struct aaa
{
public string cn;
public string rs;
}
public static aaa g;
Java并发编程之Lock
Lock是一个接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的。 我们知道,synchronized是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但synchronized粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock提供了比synchronized更广泛的锁操作,它能以更优雅的方式处理线程同步
Java并发编程:Lock接口
在实际开发中,应根据业务场景的并发特性(如读写比例、是否需要中断等)选择合适的锁实现,同时注意锁的释放(务必在 finally 中调用 unlock() ),避免死锁等问题。- 特性:支持重入(同一线程可多次获取锁,需对应次数释放),默认非公平锁(可通过构造函数指定 fair=true 实现公平锁)- 特性:分离读锁和写锁,允许多个读线程同时访问,写线程独占锁(读-读不互斥,读-写互斥,写-写互斥)- 功能:超时尝试获取锁,在指定时间内获取到锁返回 true ,超时则返回 false ,支持中断。
Java并发编程:Lock
如果锁具备可重入性,则称作为可重入锁。上述代码中的两个方法method1和method2都用synchronized修饰了,假如某一时刻,线程A执行到了method1,此时线程A获取了这个对象的锁,而由于method2也是synchronized方法,假如synchronized不具备可重入性,此时线程A需要重新申请锁。tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,也就说这个方法无论如何都会立即返回。
Java并发编程之Lock接口
Java并发编程之Lock接口 最近博主看了好多订阅的技术公众号,尤其是业内大佬的文章,写的非常不错,通熟易懂。突然就萌生了一个想法,为啥不自己也经营一个呢?通过写文章的好处还是很多的,写的过程其实也是载总结梳理知识体系的过程,能够将自己所学的技术都沉淀下来。想写一篇好的博文也不少那么容易的,需要花费很多精力和时间,查阅很多资料书籍的,能学到很多东西,查漏补缺。关注的人数多了,无形之中也提高自己在业内的影响力,在面试中和工作中也是一个加分项。 所以打算持续写下去,将所学的东西分享出来,工作之余会尽最大努力
C#
111,128
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章