C# 相当于 VB“模块”

2023-12-27

在 Visual Basic 中,您可以使用模块作为存储“松散”代码的位置,这些代码可以是可以从应用程序中的其他位置访问的方法和变量,而无需首先初始化某些内容,并且可以设置或更改变量状态,并将始终保持该值。

我发现的最接近的是 C# 中的静态方法,作为公共类的一部分,但这有一个缺点,即变量不可全局访问,或者如果变量设为静态,则变量不可在内部设置/获取。

以 VB 中存储在空白模块中的以下简单代码为例。

Private iCount as Integer = 0

Public Sub Increment()
  iCount = iCount + 1
End Sub

Public CheckModulus() As Boolean
  If iCount % 6 == 0 Then
    Return True
  Else
    Return False
  End If
End Sub

现在,您有一个课程,然后您可以从该课程中调用CheckModulus() as such

Public Class Fruits

   Public Static Function ExactBunches() As String
      If CheckModulus() Then
         Return "You have an exact amount of bunches"
      Else
         Return "You need more fruits to make a bunch"
      End If
   End Function

End Class

现在我意识到,通过一些黑客和斜杠,您可以将 iCount 移动到“设置”,并在应用程序启动时重置它等,但请记住,这是一个非常简单的示例,用于说明能够拥有一组的便利性的全局代码。我过去发现这个最有用的地方是创建用户控件或自定义类时。此外,其目的并不是使所有内容都可全局访问,而是使某些方法和变量可全局访问,而其他方法和变量只能从模块内部访问。例如,虽然CheckModulus() and Increment()(全局方法)都可以访问修改和获取iCount value, iCount无法全局访问,就像模块中私有定义的方法一样。

所以最大的泡菜是这样的:

C# 中与 VB 和 VB.NET 功能等效的代码类型是什么module ?

由于这个简单问题的复杂性,我觉得我应该为“以防万一没有答案”答案强加一个布尔值,如下所示。

如果,没有任何功能等效的东西,那么什么样的聪明 黑客或解决方法(除了使用设置或外部存储 如注册表、数据库、文件等),以实现此目的或 非常非常接近的东西?


您可以使用静态类 https://msdn.microsoft.com/en-us/library/79b3xss3.aspx。您还可以使用静态构造函数 https://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx.

public static class MyStuff
{
    //A property
    public static string SomeVariable { get; set; }

    public static List<string> SomeListOfStuff { get; set; }
    //Init your variables in here:
    static MyStuff()
    {
        SomeVariable = "blah";
        SomeListOfStuff = new List<string>();
    }

    public static async Task<string> DoAThing()
    {
        //Do your async stuff in here
    }

}

并像这样访问它:

MyStuff.SomeVariable = "hello";
MyStuff.SomeListOfStuff.Add("another item for the list");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 相当于 VB“模块” 的相关文章

  • 实现 `memcpy()`:需要 `unsigned char *`,还是只需要 `char *`?

    我正在实施一个版本memcpy 能够与它一起使用volatile 使用安全吗char 或者我需要unsigned char volatile void memcpy v volatile void dest const volatile v
  • C# 中的简单获取字符串(忽略末尾的数字)

    我认为正则表达式太过杀伤力 而且它需要我一些时间来编写一些代码 我想我现在应该学习 因为我知道一些正则表达式 分隔字母数字字符串中的字符串的最简单方法是什么 它将永远是 LLLLDDDDD 我只想要字母 l 通常只有 1 或 2 个字母 T
  • go:找到模块但不包含包

    我正在尝试安装 go 的网络包 但收到 不包含包错误 终端截图 我咨询过 go 模块 latest 已找到但不包含包 https stackoverflow com questions 62974985 go module latest f
  • 为多线程 UDP 客户端执行“close ()”时套接字描述符未释放

    我在下面编写了 UDP 客户端 它基本上生成一个单独的线程来接收数据报 但是数据报仅在主线程中发送 现在 在 Linux 发行版上实例化 udpClient 1 UDP 客户端后按 ctrl D 实现退出循环 围绕 getline 调用 并
  • 在运行时配置 ASP.NET 会话状态

    我们有一个使用 SQL Server 会话状态的 ASP NET 网站 状态配置在Web config like
  • 如何解决“HTTP 错误 404.3 - 未找到”错误?

    简单的问题 我启动 VS2008 并创建一个新的 WCF 服务应用程序 这将创建一个默认应用程序 并使用一些测试方法来显示它的工作原理 我按 CTRL F5 确实有效 伟大的 但是 它使用 Visual Studio 开发服务器 我不想支持
  • C# 按下按钮时跳出循环

    我有一个简单的 C foreach 循环 如何在按下按钮时跳出循环 它不在backgroundWorker线程中 所以我不能使用backgroundWorker Cancellation Pending 在表单中创建一个布尔标志 将事件处理
  • 将 MyGeneration 与 Fluent NHibernate 结合使用

    我在这里找到了一个使用 MyGeneration 生成 NHibernate 代码的绝佳模板 http vucetica blogspot com 2009 01 nhibernate template for my Generation
  • 如何更改 GridView 内 ListViewItemPresenter 中的 SelectedBackground

    我在 SubSection 中有一个 Clickable Gridview
  • 在 Asp.net Web API 中处理 CORS 预检

    我的架构中有三个应用程序 它们位于同一服务器上 但具有不同的端口号 A Token Application port 4444 Asp net WebApi B API Application port 3333 Asp net WebAp
  • C++ 中的静态虚函数

    我有一个基类和一个派生类 我想更改基函数 同时保持它们静态 因为它们应该作为静态传递给其他函数 我怎样才能做到这一点 ATL 框架通过将基类设为模板 然后让派生类将其类类型作为模板参数传递 从而绕过了无虚拟静态的限制 然后 基类可以在需要时
  • 如何存储生成的格式化 C 字符串

    这是一个新手问题 为了创建格式化的 C 字符串 我使用printf like int n 10 printf My number is i 10 但是 怎么样 int n 10 char msg My number is i 10 prin
  • 如何对具有无效值的属性使用 JSON.net 的默认值

    我正在使用 Newtonsoft JSON 库来反序列化来自 Web 服务的响应 问题是某些字段包含无效值 例如 一条记录上的一个字段包含一个 T 表示该字段应该是数字 我想做的是将无效字段的值设置为 null 或其他默认值 我的所有属性都
  • FireFox 中的默认表单按钮

    我正在构建一个服务器控件 它将搜索我们的数据库并返回结果 服务器控件包含一个 ASP Panel 我已将面板上的默认按钮设置为等于我的按钮 id 并将表单默认按钮设置为等于我的按钮 id 在面板上 MyPanel DefaultButton
  • 拦截C# HttpClient GetAsync

    我有一个 Web 项目 C MVC5 但没有 WebAPI 和一个简单的 HTTP REST 客户端 该客户端调用外部 REST 服务并获取 accessToken 等 我想检查所有 Get PostAsync 调用对 statusCode
  • LINQ 中的左外连接

    下面的代码不断给我一个错误消息 你调用的对象是空的 var partsWithDefaults from partsList1 in p join partsList2 in d on new PartNo partsList1 PartN
  • C# 中的自定义按钮:如何删除悬停背景?

    我正在尝试使用 Visual Studio 2005 对我的表单 其 FormBorderStyle none 执行自定义按钮 我在链接到该按钮的 ImageList 中有我的 3 种状态按钮图像 this btnClose AutoSiz
  • C++ 头文件包含

    我正在开发一个项目 每个头文件都有一个预处理器包含防护 我的包含是这样的 文件 gt 包含 main cpp gt header h 字符 h header h gt 矢量 iostream DataFiles h Character h
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS

随机推荐

  • 延迟加载在 Angular 6 中不起作用

    当我尝试导航到 时遇到此错误 http localhost 4200 仪表板 http localhost 4200 dashboard 角度中的延迟加载路线 角度 cli 6 0 0 错误错误 未捕获 承诺 错误 找不到模块 应用程序 仪
  • 如何在 AVSpeechUtterance 之后持续停止 AVAudioSession

    我想做的是允许我的应用程序使用AVSpeechSynthesizer当后台音频应用程序正在播放音频时 当我的应用程序正在说话时 我希望后台应用程序的音频 变暗 然后在我的应用程序结束说话后返回到原始音量 In my AudioFeedbac
  • 在 Keras 中导入 Attention 包会出现 ModuleNotFoundError: No module named 'attention'

    作为导入的一部分 我导入 AttentionLayer 包 如下所示 from attention import AttentionLayer 我收到以下错误 ModuleNotFoundError No module named atte
  • Windows 上 Ruby 出现 SSL 错误

    赢7x64 每当我尝试安装 gem 时 都会收到 SSL 错误 ERROR While executing gem Gem RemoteFetcher FetchError SSL connect returned 1 errno 0 st
  • 无法安装 npm 包 ||没有权限

    我在安装 PM2 时遇到以下错误 我也尝试在本地安装它 但似乎没有任何效果 请帮忙 命令 npm install pm2 g anil anil Desktop restapis npm install pm2 g npm WARN opt
  • 这是做什么的:git分支-f

    我正在尝试弄清楚如何正确使用此命令 我相信这是我想要将一个分支本质上创建到另一个分支的命令和标志 基本上删除一个分支并创建一个与另一个分支的文件同名的新分支 但我不确定 或者我的语法是否正确 如果我这样做 git branch f mast
  • PCA前后数据维度

    我正在尝试kaggle com 的数字识别器竞赛 http www kaggle com c digit recognizer使用 Python 和 scikit learn 从训练数据中删除标签后 我将 CSV 中的每一行添加到如下列表中
  • 测试 Twilio 的电话号码

    Twilio 是否有任何可用于模拟出站呼叫的 测试 电话号码 例如 我希望能够充分测试我的应用程序 为繁忙的呼叫 应答机 无序 无效号码等返回异步响应 就像我通常期望的那样 您可以使用一些号码来发送 SMS 消息 但这些号码都会返回简单 即
  • Android 活动二进制 XML 文件行:您必须提供layout_width 属性

    我已经读过它了 但它仍然在这里
  • 为什么增强 for 循环的局部变量必须是局部的? [复制]

    这个问题在这里已经有答案了 根据Java 语言规范 第 14 14 2 节 http docs oracle com javase specs jls se7 html jls 14 html jls 14 14 2 增强的变量for循环必
  • android中动画完成时获取对象的位置

    有没有办法在动画结束后找出我的动画 对象 的最终位置 假设我正在使用 TranslateAnimation 和 ScaleAnimation 以及 setFillAfter true 在 1 秒内对父位置为 0 0 20 20 的 Imag
  • 在 Visual Studio Code 中使用多个 Python 内核

    我正在尝试开始使用 Visual Studio Code 和 Don Jayamanne 的 Python Jupyter 扩展 我的系统上同时有 Python 3 5 和 3 6 内核 但我无法使它们对这些扩展都可见 VS Code 中仅
  • 将一些包从基本环境克隆到另一个环境

    我安装了蟒蛇 所以我已经安装了很多软件包 现在我创建了一个新的环境 几乎是空的 并开始向其安装一些特定的软件包 我这台机器上没有互联网 所以我需要将轮子或源文件复制到它 好的 它可以工作 但是当我在基本环境中已经有像 numpy 这样的包时
  • Swift:将不受约束的泛型类型转换为确认可解码的泛型类型

    情况 我有两个通用类 它们将从 api 和数据库获取数据 分别说 APIDataSource 和 DBDataSource 创建视图模型时 我将在视图模型中注入两个类中的任何一个 视图模型将使用该类来获取所需的数据 我希望视图模型与这两个类
  • 给div设置style='height:100%'是什么意思?

    SO上有很多与此相关的问题 但我扫描的都是针对详细的具体情况 我想知道的是 在概念层面上 这意味着什么 div style height 100 100 有多高 100 什么 EDIT 跟进问题 如果100 代表parent的高度 但是pa
  • scikit-learn 分类器的小批量训练,我提供小批量

    我有一个非常大的数据集 无法加载到内存中 我想使用这个数据集作为 scikit learn 分类器的训练集 例如LogisticRegression 是否有可能在我提供小批量的情况下对 scikit learn 分类器进行小批量训练 我相信
  • 如何获取某种类型的所有小部件?

    我有一个绝对面板以及不同的小部件 按钮 图像 标签等 是否可以获取特定类型的所有小部件的集合或数组或其他任何内容 例如图像 干得好 我们可以用iterator Iterator
  • 如何使用xsl打印百分位数

    我正在尝试使用 HTML 报告生成 99 jmeter results detail report 21 xsl文件 我可以使用以下代码打印 90
  • CSS 家谱与名称长度的对齐问题

    我从 CSS3 Family Tree 的实验性多父版本开始 http thecodeplayer com experiment css3 family tree 2 http thecodeplayer com experiment cs
  • C# 相当于 VB“模块”

    在 Visual Basic 中 您可以使用模块作为存储 松散 代码的位置 这些代码可以是可以从应用程序中的其他位置访问的方法和变量 而无需首先初始化某些内容 并且可以设置或更改变量状态 并将始终保持该值 我发现的最接近的是 C 中的静态方