C#和VB.Net自定义类之间的区别

时间:2011-09-01 21:58:54

标签: c# vb.net

我已经退出VB.Net的方式太长了,我在C#中有一个自定义类需要转换为VB.Net,并想知道它们之间的主要区别。 C#中的某些东西我似乎无法在Vb.Net中使用类如use:public classname或VB.net中的public [classname](DataTable dt)

我的课程如下:

public class subcontractor
{
    public int organization_id { get; set; }
    public int subcontractor_id { get; set; }
    public int project_id { get; set; }
    public List<evaluationpoint> points { get; set; }

    public subcontractor() { }
    public subcontractor(DataTable dt)
    {
        organization_id = Convert.ToInt32(dt.Rows[0]["organization_id"].ToString());
        subcontractor_id = Convert.ToInt32(dt.Rows[0]["subcontractor_id"].ToString());
        project_id = Convert.ToInt32(dt.Rows[0]["project_id"].ToString());
        points = new List<evaluationpoint>();
        foreach ( DataRow dr in dt.Rows )
        { points.Add(new evaluationpoint(dr)); }
    }

    public class evaluationpoint
    {
        public int category_id { get; set; }
        public int eval_id { get; set; }
        public int rating { get; set; }

        public evaluationpoint() { }
        public evaluationpoint(DataRow dr)
        {
            category_id = Convert.ToInt32(dr["category_id"].ToString());
            eval_id = Convert.ToInt32(dr["eval_id"].ToString());
            rating = Convert.ToInt32(dr["rating"].ToString());
        }
    }
}

有什么不同

3 个答案:

答案 0 :(得分:4)

首先,read this

VB.NET中的构造函数在语法上是不同的:

C#

Class Foo
{
    public Foo( int arg ) { }
}

VB

Class Foo
    Public Sub New( ByVal arg as Integer )

    End Sub
End Class

你可以在VB.NET中做大部分事情,你可以在C#中,你只需要适当地改变你的语法。那里有很多参考资料,可以利用它。

答案 1 :(得分:1)

如果您的项目是在VB.NET中实现的,那么其他项目(甚至是C#项目)仍然可以调用VB.NET方法(反之亦然)。

单个Visual Studio解决方案可以包含VB.NET项目和C#项目。每个(具有适当的项目引用)都可以访问其他方法和类,因为它们都是已编译为MSIL以供CLR运行的.NET类。

答案 2 :(得分:0)

构造函数的语法相当不同;在C#中使用类名,在VB中使用New,例如

Class SubContractor

   Public Sub New()
   End Sub

   Public Sub New(dt As DataTable)
   End Sub

End Class

有关这些差异的更多具体细节,包括此cheat sheet上的构造函数/析构函数差异。