等于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 中的函数