Generics
Generic Interfaces
A generic interface can describe behavior for a specific value type.
generic interface
A generic interface uses a type parameter in its contract.
Generic Interfaces
GenericInterfaces.cs
Replay: real traced execution (multi-file project)
using System;
interface IFormatter<T>
{
string Format(T value);
}
class IntFormatter : IFormatter<int>
{
public string Format(int value)
{
return "value=" + value;
}
}
class Program
{
static void Main()
{
int value = 7;
IFormatter<int> formatter = new IntFormatter();
string formatted = formatter.Format(value);
Console.WriteLine($"value={value}");
Console.WriteLine($"formatted={formatted}");
}
}
using System;
interface IFormatter<T>
{
string Format(T value);
}
class IntFormatter : IFormatter<int>
{
public string Format(int value)
{
return "value=" + value;
}
}
class Program
{
static void Main()
{
int value = 3;
IFormatter<int> formatter = new IntFormatter();
string formatted = formatter.Format(value);
Console.WriteLine($"value={value}");
Console.WriteLine($"formatted={formatted}");
}
}
using System;
interface IFormatter<T>
{
string Format(T value);
}
class IntFormatter : IFormatter<int>
{
public string Format(int value)
{
return "value=" + value;
}
}
class Program
{
static void Main()
{
int value = 11;
IFormatter<int> formatter = new IntFormatter();
string formatted = formatter.Format(value);
Console.WriteLine($"value={value}");
Console.WriteLine($"formatted={formatted}");
}
}
value ← 7, formatter ← IntFormatter
17{18 static void Main()19 {20 int value→ 7 = 7; //@value=3, 1121 IFormatter<int> formatter→ IntFormatter = new IntFormatter();22 string formatted = formatterIntFormatter.Format(value7);public string Format(int value)
9{10 public string Format(int value7)11 {12 return "value=" + value7;13 }formatted ← value=7
21 IFormatter<int> formatter = new IntFormatter();22 string formatted→ value=7 = formatterIntFormatter.Format(value7);2324 Console.WriteLine($"value={value7}");25 Console.WriteLine($"formatted={formattedvalue=7}");26}outputvalue=7 formatted=value=7
value ← 3, formatter ← IntFormatter
17{18 static void Main()19 {20 int value→ 3 = 3;21 IFormatter<int> formatter→ IntFormatter = new IntFormatter();22 string formatted = formatterIntFormatter.Format(value3);public string Format(int value)
9{10 public string Format(int value3)11 {12 return "value=" + value3;13 }formatted ← value=3
21 IFormatter<int> formatter = new IntFormatter();22 string formatted→ value=3 = formatterIntFormatter.Format(value3);2324 Console.WriteLine($"value={value3}");25 Console.WriteLine($"formatted={formattedvalue=3}");26}outputvalue=3 formatted=value=3
value ← 11, formatter ← IntFormatter
17{18 static void Main()19 {20 int value→ 11 = 11;21 IFormatter<int> formatter→ IntFormatter = new IntFormatter();22 string formatted = formatterIntFormatter.Format(value11);public string Format(int value)
9{10 public string Format(int value11)11 {12 return "value=" + value11;13 }formatted ← value=11
21 IFormatter<int> formatter = new IntFormatter();22 string formatted→ value=11 = formatterIntFormatter.Format(value11);2324 Console.WriteLine($"value={value11}");25 Console.WriteLine($"formatted={formattedvalue=11}");26}outputvalue=11 formatted=value=11