# C# - delegate practice(inverted triangle)
只用一支method, 傳入委派來畫出正、倒的靠左、靠右、置中三角形(共六種)
```csharp=
using System;
namespace DelegatePractice
{
internal class Program
{
static void Main(string[] args)
{
int rows = 5;
//靠左正三角形
var left = new Triangle();
string leftResult = left.GetTriangle(rows, stars => new string('*', stars));
Console.WriteLine(leftResult);
//靠右正三角形
var right = new Triangle();
string rightResult = right.GetTriangle(rows, stars => new string('*', stars).PadLeft(rows));
Console.WriteLine(rightResult);
//置中正三角形
var isosceles = new Triangle();
string isoscelesResult = isosceles.GetTriangle(rows, stars => new string(' ', rows - stars) + new string('*', stars * 2 - 1));
Console.WriteLine(isoscelesResult);
//靠左倒三角形
var invertedLeft = new Triangle();
string result = invertedLeft.GetTriangle(rows, stars => new string('*', rows - stars + 1));
Console.WriteLine(result);
//靠右倒三角形
var invertedRight = new Triangle();
string result2 = invertedRight.GetTriangle(rows, stars => new string('*', rows - stars + 1).PadLeft(rows));
Console.WriteLine(result2);
//置中倒三角形
var invertedIsosceles = new Triangle();
string result3 = invertedIsosceles.GetTriangle(rows, stars => new string(' ', stars - 1) + new string('*', (rows - stars + 1) * 2 - 1));
Console.WriteLine(result3);
}
}
public class Triangle
{
public string GetTriangle(int rows, Func<int, string> func)
{
string result = "";
for (int i = 1; i <= rows; i++)
{
result += (func(i)) + "\n";
}
return result;
}
}
}
```