Question: This is **code-related** as in what the compiler will allow you to do in one language, but not allow you to do in another language (e.g. optional parameters in VB don't exist in C#).

Please provide a code example with your answer, if possible. Thank you!

Answer: 
In C# you can declare a property in an interface as having a 'get', and then implement it in a class with a get and set. 

```
public interface IFoo {
  string Bar {get;}
}

public class Foo : IFoo {
  public string Bar {get; set;}
}

```

In VB, the equivalent to declating a property with a get would be to declare it ReadOnly. You can't then make the implementation writable.

```
Public Interface IFoo 

  ReadOnly Property Bar() As String

End Interface

Public Class Foo 
   Implements IFoo

  Public Property Bar() As String Implements IFoo.Bar  'Compile error here'

End Class

```

I find this to be a severe limitation of VB. Quite often I want to define an Interface that allows other code only to be able to read a property, but I need a public setter in the implemented class, for use by the persistor.
Global variables don't exist in c# i think