相当于VB公共模块的C#,也请

时间:2010-08-05 00:50:25

标签: c# vb.net

我正在将VB.net库转换为C#,并且无法找到与VB.Net公共模块等效的C#。

在同一个VB类中是With块。任何想法也可能是什么。

TIA 史蒂夫坎波斯

2 个答案:

答案 0 :(得分:4)

不幸的是,在C#中没有相应的VB.Net模块。最接近的是静态类。两者都定义了一个对象,该对象不能具有实例成员,但它们具有不同的语义。对于VB.Net来说,最大的是,如果模块在范围内,则可以无限制地访问其成员

Module Example 
  Public Function Sum(x as Integer, y As Integer) As Integer
    return x + y
  End Function
End Module

Class C1
  Sub Method1() 
    Dim x = Sum(13,42)
  End Sub 
Class

C#没有此功能,需要对静态类成员进行限定访问。

还有其他一些较小的差异

  • 隐式共享模块成员,而静态类成员需要显式静态限定符
  • 生成类型结构中的一些小琐事

答案 1 :(得分:3)

没有等效的With

根据版本的不同,您可以:

var myCommand = new SqlCommand(SpMainInsert, myConnection) {
    CommandType = System.Data.CommandType.StoredProcedure
};

模块定义

这是在VB.NET项目中创建Module(模块模板项)时基于默认声明的正确定义。无论是否需要,私有构造函数都是声明的一部分。这个C#“模块定义”取自多年前的Microsoft资源。我现在没有参考来源,但会尝试稍后发布。

internal { sealed | static } class Module1 {
    #if sealed
        private Module1() { }
    #endif
    public static void Method1() { }
    public static string Method2() { return "here"; }
} 

调用模块方法

    Module1.Method1();
    string foo = Module1.Method2();