iPhone和.NET的const关键字有什么不同?
我是一名即将开发iPhone的.NET开发人员,目前仍在摸索中 在.NET中,为了可读性,我通常会使用命名常量。 我知道iphonedev中也有一个const关键字,但我看到的大多数示例在这个例子中都使用了#define 这两种实现之间的真正区别是什么? 附加问题:应该如何以及何时使用它们?iPhone和.NET的const关键字有什么不同?,.net,iphone,objective-c,coding-style,.net,Iphone,Objective C,Coding Style,我是一名即将开发iPhone的.NET开发人员,目前仍在摸索中 在.NET中,为了可读性,我通常会使用命名常量。 我知道iphonedev中也有一个const关键字,但我看到的大多数示例在这个例子中都使用了#define 这两种实现之间的真正区别是什么? 附加问题:应该如何以及何时使用它们?\defines是在最终代码中替换的预处理器宏。因此,它们有一个定义过的值,可以免费访问const只是静态地分配编译器处理的变量。因此,对于大多数任务,我会(或者更确切地说是)使用#define而不是cons
\defines
是在最终代码中替换的预处理器宏。因此,它们有一个定义过的值,可以免费访问<另一方面,code>const只是静态地分配编译器处理的变量。因此,对于大多数任务,我会(或者更确切地说是)使用#define
而不是const
。只有
#定义的
常量可用于开关状态,顺便说一句。还有许多其他问题,为了讨论在Objective-C中如何声明和行为常量,您应该看看以下内容:
为了与C#进行比较和对比,我要指出Obj-C中的const
与C语言中的基本相同(Obj-C实际上是C的超集)。在Obj-C中,常量在全局范围内声明,并且必须初始化为编译时已知的值。Objective-C不支持常量作为类成员。在C#中,常量始终是类(或结构)的成员,还必须使用编译时已知的值进行初始化。C##define
不允许值与定义的符号相关联,而是用于允许选择条件编译路径(使用#if
和#else
),这是完全不同的
关于使用#define
声明常量,我个人尽可能避免这种情况。定义为#的值在编译时被简单地替换到代码中,并且可以在不同的上下文中进行不同的解释。还可能引入名称冲突,这可能导致意外地重新定义值。我的建议是在可能的时候使用const,在必须的时候使用define。