, ( ). , .
OOP
O OOP Object .
, . String . , Print.
public static void Print<T>(T value)
{
Console.WriteLine(value.ToString());
}
nullity ref.
public static void Print<T>(T value) where T : class
{
if (value != null)
{
Console.WriteLine(value.ToString());
}
}
public static void GenericFunc<T>(T value) where T : class
{
Print(value);
}
, , , (. ).
, . , . -, , . -, , : . ToString.
...
, , - .
( Foo) , Foo. IFooCallable:
public interface IFooCallable
{
void Foo();
}
...
, , , .
. , node (, AST).
, .
:
public class Visitor : IVisitor
{
public void Visit(Foo foo)
{
}
public void Visit(Bar bar)
{
}
}
Visitable
public class Foo : IVisitable
{
public void Accept(IVisitor visitor)
{
visitor.Visit(this);
}
}
, ( IVisitor, ).
dynamic. , , . , ;)
public static void Print(dynamic value)
{
Console.WriteLine(value);
}
public static void GenericFunc(dynamic value)
{
Print(value);
}
static void Main(dynamic[] args)
{
GenericFunc((dynamic)"Hello World");
}