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

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

【问题讨论】:

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

标签: c# c++


【解决方案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;
  }

}

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

【讨论】:

    猜你喜欢
    • 2016-11-03
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    相关资源
    最近更新 更多