public class SharpEightNewInfo
{
public enum WeekInfo
{
MonDay = 1,
TuesDay = 2
}
public static void Show() {
//默认接口函数,接口函数可以直接在接口里实现
{
ICustomInterface interface1 = new CustomClass();
interface1.Show();
interface1.ShowInfo();
}
//swtich表达式
{
Console.WriteLine(WeekToString(WeekInfo.MonDay));
}
//属性模式switch
{
ProertyPattern pattern = new ProertyPattern()
{
ProducName = "test",
Price = 10
};
Console.WriteLine(ProertyPatternShow(pattern));
}
//元组模式switch
{
Console.WriteLine(RockPaperScissors("test1","test2"));
Console.WriteLine(RockPaperScissors("test1", "test3"));
}
//位置模式
{
PointInfo point = new PointInfo(123, 234);
int i = 11;
int j = 12;
point.Deconstruct(out i,out j);
}
//异步流,异步遍历集合
{
AsyncIEnumerableShow();
}
while (true)
{
}
}
public async static void AsyncIEnumerableShow() {
Console.WriteLine("**异步流**");
IAsyncEnumerable<int> asynclist = GenerateSequence();
await foreach (var item in asynclist)
{
Console.WriteLine(item);
}
Console.WriteLine("**异步流**");
}
/// <summary>
/// 返回异步流集合
/// </summary>
/// <returns></returns>
public static async IAsyncEnumerable<int> GenerateSequence() {
for (int i = 0; i < 20; i++)
{
await Task.Delay(1000).ContinueWith(s => {
Console.WriteLine($"线程ID:{Thread.CurrentThread.ManagedThreadId.ToString("000")}");
});
yield return i;
}
}
/// <summary>
/// 元组swtic匹配
/// </summary>
/// <param name="first"></param>
/// <param name="second"></param>
/// <returns></returns>
public static string RockPaperScissors(string first, string second) => (first, second) switch
{
("test1", "test2") => $"{first}-{second}",
(_, _) => "未找到"
};
/// <summary>
/// C#8 switch语法
/// </summary>
/// <param name="week"></param>
/// <returns></returns>
public static string WeekToString(WeekInfo week) => week switch
{
WeekInfo.MonDay => "周一",
WeekInfo.TuesDay => "周二",
_ => throw new NotImplementedException(""),
};
/// <summary>
/// 属性模式,直接匹配属性,swtich分之判断
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
public static double ProertyPatternShow(ProertyPattern pattern) => pattern switch
{
{ ProducName: "test" } => pattern.Price * 10,
_ => throw new NotImplementedException(),
};
}
public class PointInfo {
public PointInfo(int x, int y) => (X, Y) = (x, y);
public int X { get; set; }
public int Y { get; set; }
public void Deconstruct(out int x, out int y) => (x, y) = (X,Y);
}
public class ProertyPattern {
public string ProducName { get; set; }
public double Price { get; set; }
}
public class CustomClass : ICustomInterface
{
public void Show()
{
Console.WriteLine("this is show");
}
}
/// <summary>
/// 默认接口函数
/// </summary>
interface ICustomInterface {
public void Show();
/// <summary>
/// 接口可以带函数体
/// </summary>
public void ShowInfo() {
Console.WriteLine("this is showinfo");
}
}