Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>They have separate compilers (csc.exe for C# and vbc.exe for VB.Net) but they both get compiled into IL and then at run-time JIT compiles it into machine code. </p> <p>Question 1 : can C# compiler compile VB.net code? </p> <p>Answer 1: No it can't and you will see that in the below example. It gives an error if you try to do that as it looks for C# syntax.</p> <p>Question 2: I think that's what they say in the book. Since it is two compilers, I feel it is not compatible</p> <p>Answer 2: It doesn't say that you can compile VB code using C# but it says that you can mix languages in a single application like I did in the example below and still able to compile C# and VB (using their compilers). </p> <p>See below example to understand how it works. I created a solution with a C# project with a C# class and a VB project with a VB class. You should not mix C# and VB classes in same project as it will ignore the vb file if its a C# project during build.</p> <p><img src="https://i.stack.imgur.com/6pBPR.png" alt="Solution Structure"></p> <p>Content of ClassCSharp.cs:</p> <pre><code>namespace ClassLibraryCSharp { public abstract class ClassCSharp { public int MyProperty { get; set; } protected abstract void Test(); } } </code></pre> <p>Content of ClassVBInCSharp.vb in C# ClassLibrary. See how I can inherit from a C# class and also access its properties and override the method.</p> <pre><code>Namespace ClassLibraryVB Public Class ClassVBInCSharp Inherits ClassCSharp Property Test2 As Integer Protected Overrides Sub Test() Test2 = MyBase.MyProperty End Sub End Class End Namespace </code></pre> <p>See below commands I ran: </p> <pre><code>vbc.exe /reference:"ClassLibraryCSharp.dll" /target:library /out:"ClassLibraryCSharpVbVersion.dll" "ClassVBInCSharp.vb" Microsoft (R) Visual Basic Compiler version 12.0.20806.33440 Copyright (c) Microsoft Corporation. All rights reserved. </code></pre> <p>See above VB Compiler is used to compile vb class.</p> <pre><code>csc.exe /reference:"ClassLibraryCSharp.dll" /target:library /out:"ClassLibraryCSharpVersion.dll" "ClassVBInCSharp.vb" Microsoft (R) Visual C# Compiler version 4.0.30319.33440 for Microsoft (R) .NET Framework 4.5 Copyright (C) Microsoft Corporation. All rights reserved. ClassLibrary1\ClassVBInCSharp.vb(1,1): error CS 0116: A namespace cannot directly contain members such as fields or methods </code></pre> <p>See above if I try to use C# Compiler to compile vb class it throws an error as its looking for C# syntax.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload