[英]How do I “include” defines in C#?
我是一位C ++程序员,刚开始使用.NET在C#中对Windows应用程序进行编程。
我正在MSDN( https://msdn.microsoft.com/zh-cn/library/chf6fbt4.aspx )上查看一些示例代码,并且看到以下(部分)代码:
const int LOGON32_PROVIDER_DEFAULT = 0;
//This parameter causes LogonUser to create a primary token.
const int LOGON32_LOGON_INTERACTIVE = 2;
// Call LogonUser to obtain a handle to an access token.
bool returnValue = LogonUser(userName, domainName, Console.ReadLine(),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out safeTokenHandle);
因此,变量LOGON32_PROVIDER_DEFAULT
和LOGON32_LOGON_INTERACTIVE
在示例代码中明确定义。 相比之下,如果我用C ++编写此代码,则本可以包括已经定义了以下变量的Winbase.h:
#define LOGON32_LOGON_INTERACTIVE 2
#define LOGON32_LOGON_NETWORK 3
#define LOGON32_LOGON_BATCH 4
#define LOGON32_LOGON_SERVICE 5
#define LOGON32_LOGON_UNLOCK 7
有没有办法在C#中做相同类型的事情? 那么,是否有某种魔术使我能够使用LOGON32_LOGON_INTERACTIVE
而不用自己在C#代码中定义它? 我的意思不是重用标头,而是在C#中一般如何完成标头。 如果我必须手动复制粘贴这些值,似乎很容易出错。 除此之外,将不完全赞赏输入这些定义的人员所做的辛苦工作!
以相同的方式,C ++尝试使您的代码比C代码更多地分类,使用类而不是函数(对于C而言,按照约定,您将尝试使用相同的长前缀对它们进行分组) ,C#会迫使自己更多地对代码进行分类,以避免更多的刚才针对C ++等效物描述的“全局项”实践。
因此,您想要C#中的常量吗? 好的,只需将其放在一个类中,然后从其他需要它的代码中使用Class.MY_CONSTANT。
但是,在这种特定情况下,似乎有多个常量引用相同的“域”,所以对我来说,它的气味像一个枚举成员。 学习C#枚举,它们非常有用,可以让您拥有比C ++枚举更多的简洁代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.