等于c#中的c++ extern

Posted

技术标签:

【中文标题】等于c#中的c++ extern【英文标题】:Equal of c++ extern in c# 【发布时间】:2016-04-10 12:25:39 【问题描述】:

c++extern int anything;c# 程序中的确切含义是什么?我有超过 10 个类,我想使用一个变量而不将每个类中的值更改为默认值。如果我将此变量放在此类中的一个中,则在其他类中我更改变量的值,但在其他类中的变量值设置为默认值,但我需要外部或全局变量在每个类中具有固定的更改值,如 c++ extern int anything; 但在c#

【问题讨论】:

c# 中不需要它。 你需要 DllImport 才能让它工作,你可以直接使用 C++ 实现,看看这个 - ***.com/questions/5110706/how-does-extern-work-in-c c#没有像extern这样的特性,C#是完全面向对象的,你不能做任何全局声明。唯一的方法是为所有 10 个类创建一个父类,并在其中声明一个静态变量。从父级继承所有 10 个类 【参考方案1】:

要在 C# 中创建全局变量,您必须在类中创建公共静态字段或属性:

class Globals 

  public static int AnythingProperty  get; set; 

  public static int AnythingField;


如果Globals 类仅包含静态成员(如名称所示),那么您可以将类声明更改为static class Globals

然后您可以从任何其他类中访问属性或字段:

class SomeClass 

  public void SomeMethod() 
    Globals.AnythingProperty += 1;
    Globals.AnythingField = 2;
  


在代码中包含全局变量会增加耦合,并可能导致细微的错误和难以理解的代码。大多数情况下,使用全局变量还有其他选择,但至少您现在知道如何使用。

【讨论】:

以上是关于等于c#中的c++ extern的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 C# 从 C++ dll 调用 struct 中的函数

从 C# 程序访问 C++ DLL 中的多个函数

C#调用C++类库的几种方式

Swig C++ to C#:如何从 C++ 包装类以使模板类中的方法在 C# 的派生类中可用?

在 C# CLR 中学习 C++ 之了解 extern

c++中的external function啥意思