View Full Version : 问个比较弱的全局常量的问题


David Jia
04-05-2007, 05:34 PM
在C#编程中可不可以定义这样一类常量(或变量),比如说名字 是 ABC ,

然后在任何类里都可以直接用 ABC 来访问。

目前我发现只能通过定义类的静态成员来实现跨不同class的访问。
只能这样

public class MyClass
{
public static ABC;
public static CDE;
}

然后访问的时候 MyClass.ABC,因为引用的地方有很多,这样使用变量/常量 貌似太麻烦了,请赐教。

gshzheng
04-06-2007, 01:44 AM
David Jia,

你的方法也可以,OO编程就是貌似太麻烦的:)

另外,可以用Singleton模式来实现全局变量,我一直用的很方便.

但有人曾告诉我最好不要这么做,我一直没有找到正确的原因.
希望达人告知.

gshzheng
20070406

"David Jia" <caryjia@21cn.com> 写入消息新闻:%23dT2HA6dHHA.420@TK2MSFTNGP04.phx.gbl...
> 在C#编程中可不可以定义这样一类常量(或变量),比如说名字 是 ABC ,
>
> 然后在任何类里都可以直接用 ABC 来访问。
>
> 目前我发现只能通过定义类的静态成员来实现跨不同class的访问。
> 只能这样
>
> public class MyClass
> {
> public static ABC;
> public static CDE;
> }
>
> 然后访问的时候 MyClass.ABC,因为引用的地方有很多,这样使用变量/常量 貌似太麻烦了,请赐教。
>
>

绉﹂鎰忓姩
04-06-2007, 01:56 AM
濡傛灉鏄父閲忔渶濂芥斁鍦╝pp.config(winform) web.config(webform)
鐒跺悗閫氳繃ModuleSettings璁块棶

涓嶈鍐欐垚 public static ABC
{
get {}
}

鎶妔et鍘绘帀
瀹夊叏

鈥淒avid Jia鈥濈紪鍐欙細

> 鍦–#缂栫▼涓彲涓嶅彲浠ュ畾涔夎繖鏍蜂竴绫诲父閲忥紙鎴栧彉閲忥級锛屾瘮濡傝鍚嶅瓧 鏄 ABC 锛
>
> 鐒跺悗鍦ㄤ换浣曠被閲岄兘鍙互鐩存帴鐢 ABC 鏉ヨ闂
>
> 鐩墠鎴戝彂鐜板彧鑳介氳繃瀹氫箟绫荤殑闈欐佹垚鍛樻潵瀹炵幇璺ㄤ笉鍚宑lass鐨勮闂
> 鍙兘杩欐牱
>
> public class MyClass
> {
> public static ABC;
> public static CDE;
> }
>
> 鐒跺悗璁块棶鐨勬椂鍊 MyClass.ABC锛屽洜涓哄紩鐢ㄧ殑鍦版柟鏈夊緢澶氾紝杩欐牱浣跨敤鍙橀噺/甯搁噺 璨屼技澶夯鐑︿簡锛岃璧愭暀銆
>
>

绉﹂鎰忓姩
04-06-2007, 02:18 AM
鎴戝垰璇寸殑閭d釜閫傚悎浜庡悗鏉ュ彲浠ユ牴鎹渶瑕佷慨鏀圭殑鎯呭喌
濡傛灉鏄‘瀹氱殑 纭紪鐮佺殑鎯呭喌

姣斿
public static readonly string TITLE = "涓浗浜烘皯閾惰";

杩欐牱搴旇鏄渶濂界殑锛屾瘮singleton濂
singleton example:
private static string TITLE = null;
public static string XXXX()
{
if(TITLE == null)
TITLE = "涓浗浜烘皯閾惰";

return TITLE;
}

鍖哄埆鍦ㄤ簬2鐐癸細
1 鍓嶈呭湪甯搁噺锛堟爣閲忥級鎴栨暟鎹紝鍚庤呮槸鍙橀噺锛堝叏灞鐨勶級
2 鍔犺浇鍚庡湪鍐呭瓨鍓嶈呭湪鏁版嵁鍖猴紝鍚庤呭垯涓嶆槸

鈥淒avid Jia鈥濈紪鍐欙細

> 鍦–#缂栫▼涓彲涓嶅彲浠ュ畾涔夎繖鏍蜂竴绫诲父閲忥紙鎴栧彉閲忥級锛屾瘮濡傝鍚嶅瓧 鏄 ABC 锛
>
> 鐒跺悗鍦ㄤ换浣曠被閲岄兘鍙互鐩存帴鐢 ABC 鏉ヨ闂
>
> 鐩墠鎴戝彂鐜板彧鑳介氳繃瀹氫箟绫荤殑闈欐佹垚鍛樻潵瀹炵幇璺ㄤ笉鍚宑lass鐨勮闂
> 鍙兘杩欐牱
>
> public class MyClass
> {
> public static ABC;
> public static CDE;
> }
>
> 鐒跺悗璁块棶鐨勬椂鍊 MyClass.ABC锛屽洜涓哄紩鐢ㄧ殑鍦版柟鏈夊緢澶氾紝杩欐牱浣跨敤鍙橀噺/甯搁噺 璨屼技澶夯鐑︿簡锛岃璧愭暀銆
>
>

FORREST
04-06-2007, 02:22 AM
如果是一个项目中,用模块也可以吧
"David Jia" <caryjia@21cn.com> 写入邮件
news:%23dT2HA6dHHA.420@TK2MSFTNGP04.phx.gbl...
> 在C#编程中可不可以定义这样一类常量(或变量),比如说名字 是 ABC ,
>
> 然后在任何类里都可以直接用 ABC 来访问。
>
> 目前我发现只能通过定义类的静态成员来实现跨不同class的访问。
> 只能这样
>
> public class MyClass
> {
> public static ABC;
> public static CDE;
> }
>
> 然后访问的时候 MyClass.ABC,因为引用的地方有很多,这样使用变量/常量 貌似太
麻烦了,请赐教。
>

绉﹂鎰忓姩
04-06-2007, 02:24 AM
涓婇潰璇寸殑鏄彲鑳借浠ュ悗淇敼鐨勫父閲
濡傛灉纭畾浠ュ悗涓嶅彉 瑕佺‖缂栫爜杩涘幓鐨勮瘽
public static readonly string TITLE = "涓浗";鏈濂

姣攕ingleton濂
singleton example:
private static readonly string TITLE = "涓浗";
public static string myMethod()
{
if(TITLE == null)
TITLE = "涓浗";
return TITLE;

}

涓汉瑙夊緱搴旇鏈変互涓嬪尯鍒細涓涓槸甯搁噺鏁版嵁锛堟爣閲忥級锛屼竴涓槸鍏ㄥ眬鍙橀噺
杩愯鏃跺墠鑰呭湪鍐呭瓨鐨勬暟鎹尯锛屽悗鑰呭湪绋嬪簭鍖




鈥淒avid Jia鈥濈紪鍐欙細

> 鍦–#缂栫▼涓彲涓嶅彲浠ュ畾涔夎繖鏍蜂竴绫诲父閲忥紙鎴栧彉閲忥級锛屾瘮濡傝鍚嶅瓧 鏄 ABC 锛
>
> 鐒跺悗鍦ㄤ换浣曠被閲岄兘鍙互鐩存帴鐢 ABC 鏉ヨ闂
>
> 鐩墠鎴戝彂鐜板彧鑳介氳繃瀹氫箟绫荤殑闈欐佹垚鍛樻潵瀹炵幇璺ㄤ笉鍚宑lass鐨勮闂
> 鍙兘杩欐牱
>
> public class MyClass
> {
> public static ABC;
> public static CDE;
> }
>
> 鐒跺悗璁块棶鐨勬椂鍊 MyClass.ABC锛屽洜涓哄紩鐢ㄧ殑鍦版柟鏈夊緢澶氾紝杩欐牱浣跨敤鍙橀噺/甯搁噺 璨屼技澶夯鐑︿簡锛岃璧愭暀銆
>
>