+ -
当前位置:首页 → 问答吧 → C#中的预编译有没有c++宏中的复杂功能?

C#中的预编译有没有c++宏中的复杂功能?

时间:2011-12-05

来源:互联网

譬如c++宏可以定义一个表达式,在编译时展开。
C/C++ code

//C++ Macro
#define MACRO(X,Y) (X+Y)


我现在遇到的问题是,我需要定义很多属性,除了属性名不一样外,其它格式都一致,我想简化代码,写成c++中宏的形式在编译时展开,不知道怎么做?
譬如我的属性为:
C# code
        
public static DependencyProperty FirstProperty = DependencyProperty.Register("First", 
            typeof(string), 
            typeof(ABC), 
            new PropertyMetadata("First"));
        [Browsable(false)]
        [Description("First")]
        [Category("Activity")]
        public string First
        {
            get
            {
                return GetValue(FirstProperty) as string;
            }
            set
            {
                SetValue(FirstProperty, value);
            }
        }

public static DependencyProperty SecondProperty = DependencyProperty.Register("Second", 
            typeof(string), 
            typeof(ABC), 
            new PropertyMetadata("Second"));
        [Browsable(false)]
        [Description("Second")]
        [Category("Activity")]
        public string Second
        {
            get
            {
                return GetValue(SecondProperty) as string;
            }
            set
            {
                SetValue(SecondProperty, value);
            }
        }


作者: donkey301   发布时间: 2011-12-05

你要的C#(或Visual Studio C#开发环境)并不支持。
"宏"虽然方便,很多时候它也可以是非常邪恶的。

可以使用Visual Studio的预编译(Prebuild Event)等来进行一定的代码自动维护。
(比如展开宏定义等等)。

原文见:
http://topic.csdn.net/u/20110809/09/02b455d0-862a-4d95-9c1f-71af887b7721.html

作者: gomoku   发布时间: 2011-12-05

没有C++那么复杂的,关键是一般我们C#编程不喜欢用这些,很可能导致看不懂程序。
C#是给人看的,C++是给超人看的。

作者: JulioHuang   发布时间: 2011-12-05

引用 1 楼 gomoku 的回复:

你要的C#(或Visual Studio C#开发环境)并不支持。
"宏"虽然方便,很多时候它也可以是非常邪恶的。

可以使用Visual Studio的预编译(Prebuild Event)等来进行一定的代码自动维护。
(比如展开宏定义等等)。

原文见:
http://topic.csdn.net/u/20110809/09/02b455d0-862a-4d95-9c1f-71……

看了一下链接网页,没找到需要的,Thanks any way.

作者: donkey301   发布时间: 2011-12-05

引用 1 楼 gomoku 的回复:
你要的C#(或Visual Studio C#开发环境)并不支持。
"宏"虽然方便,很多时候它也可以是非常邪恶的。

可以使用Visual Studio的预编译(Prebuild Event)等来进行一定的代码自动维护。
(比如展开宏定义等等)。

原文见:
http://topic.csdn.net/u/20110809/09/02b455d0-862a-4d95-9c1f-71a……

+1

作者: ZhangNan20100811   发布时间: 2011-12-05

在C#中,不建议使用宏定义,因为它仅仅是是字符串替换而已,不具备类型安全检查!

用常量或函数去替换!

作者: sdl2005lyx   发布时间: 2011-12-07

.net中的编译,交给clr去优化,一般不做什么

作者: jiuhexuan   发布时间: 2011-12-07