【问题标题】:What is code between '[]' and what does it do?'[]' 之间的代码是什么,它有什么作用?
【发布时间】:2015-02-05 15:33:09
【问题描述】:

我学习 C# 已经有一段时间了。写了一些程序等。我没有处理高级概念,但是在研究其他人的代码时,我注意到有些代码行我不明白为什么它们在那里。在示例中,我知道我知道它正在导入一个 DLL,但不确定这行代码叫什么?是声明吗?我在哪里可以了解更多关于它们的信息?

在不知道它叫什么的情况下尝试了解某事是不可能的:)

例子:

[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "SendMessage", SetLastError = true)]
static extern IntPtr SendMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam);

【问题讨论】:

  • DllImport 用于在托管框架的 .Net 框架中使用非托管代码。阅读更多关于Using the DllImport Attribute
  • 您应该在询问之前进行搜索。如果您这样做了,您会在网络上找到大量的网页来回答您的问题。
  • @HansKesting 不是。单独搜索DllImport 可以提供大量结果来解释这里发生了什么,或者至少使用也可以搜索的其他术语。 STAThread也是如此。
  • 如果您搜索过“DllImport”,Google 搜索结果中的第一项是“使用 DllImport 属性 - MSDN - Microsoft”的 MSDN 文章 “STAThread”的第一个结果是指向“[STAThread] 是做什么的?”链接的 StackOverflow 文章。搜索您不知道要搜索的内容可能很困难,但在这种情况下,您知道可以查找“DllImport”。为了将来参考,如果您在发布诸如此类的(非常)基本问题之前再走一步,您将帮自己一个忙。

标签: c# .net


【解决方案1】:

但不确定这行代码叫什么?

[ ] 中的任何内容都是Attribute,它提供了编译器或运行程序,该程序使用反射来获得洞察力/提示,从而提供其之后的对象的 视图( []) 声明。

有关介绍,请参阅Attributes Tutorial

【讨论】:

  • 非常感谢,将在 40 秒内选择作为答案^.^
  • 任何东西,除非是array indexer :-)
  • @HansKesting 或者不是数组索引器的索引器。
【解决方案2】:

也许this link 对你有用。

关于页面属性的相关段落在这里:

属性基础

属性一般物理应用在type和type前面 成员声明。它们用方括号声明,“[”和 "]",包围属性如以下ObsoleteAttribute 属性:

[ObsoleteAttribute] 属性名称的“属性”部分是 选修的。所以下面等价于上面的属性:

[Obsolete] 你会注意到该属性仅使用 属性的名称,用方括号括起来。很多属性 有参数列表,允许包含附加信息 进一步定制程序。清单 16.1 展示了各种 ObsoleteAttribute 属性的使用方法。

Microsoft's MSDN page 上,有对该特定属性使用的描述。

DllImport 属性在重用现有的非托管时非常有用 托管应用程序中的代码。例如,您的托管应用程序 可能需要调用非托管 WIN32 API。

如需更深入的信息,请在 Google 或 canonical sources on MSDN 上进行简单搜索,这将说明目的、用法和代码示例。

【讨论】:

  • 同样使用链接目标的实际页面标题,而不是“此链接”。
猜你喜欢
  • 2016-02-05
  • 2011-01-14
  • 2016-06-19
  • 1970-01-01
  • 2019-04-26
  • 2016-04-29
  • 2017-03-02
  • 2012-10-04
  • 1970-01-01
相关资源
最近更新 更多