Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone和.NET的const关键字有什么不同?_.net_Iphone_Objective C_Coding Style - Fatal编程技术网

iPhone和.NET的const关键字有什么不同?

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

我是一名即将开发iPhone的.NET开发人员,目前仍在摸索中

在.NET中,为了可读性,我通常会使用命名常量。 我知道iphonedev中也有一个const关键字,但我看到的大多数示例在这个例子中都使用了#define

这两种实现之间的真正区别是什么? 附加问题:应该如何以及何时使用它们?

\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。