No.
You can only declare classes as abstract, and variables as references to classes (or as value types).
You can declare a variable as a reference to an abstract class, that's fine:
public abstract class MyBase { ... }
public class MyDerived : MyBase { ... }
private void MyMethod()
{
MyBase base = new MyDerived();
}
And
base
can hold a reference to any class derived from MyBase.
Similarly, within the abstract base class, you can't declare an abstract field:
public abstract string myString;
Because the derived class would have to match the signature exactly - so where is the point? The field may as well be defined in the base class.
You can however declare abstract properties:
public abstract class MyBase
{
public abstract string MyString { get; protected set; }
}
And then the derived classes must provide the implementation.