合并枚举 [Flags]
参考: Flags 特性 c#_c# flags属性-CSDN博客
[Flags] public enum Options { Insetred = 1, Update = 2, Query = 3, Delete = 4, ALL = Insetred | Update | Query | Delete }
User user = new User(); user.Option = Options.Delete | Options.Update; Console.WriteLine(user.Option.ToString()); //是否包含 枚举 if (user.Option.HasFlag(Options.Update)) { Console.WriteLine("用户可以更新"); } User user1 = new User(); user1.Option = Options.ALL; Console.WriteLine(user1.Option); if (user1.Option.HasFlag(Options.Delete)) { Console.WriteLine("用户可以删除"); }
C#解构器
参考: C#解构器_c# deconstruct-CSDN博客
关键字 Deconstruct 使用 Deconstruct(out DateTime createTime, out string orderCode)
public class Order { public Order(DateTime createTime, string orderCode) { CreateTime = createTime; OrderCode = orderCode; } public DateTime CreateTime { get; set; } public string OrderCode { get; set; } public void Deconstruct(out DateTime createTime, out string orderCode) { createTime = CreateTime; orderCode = OrderCode; } }
使用 (DateTime createTime, string orderCode) = order;
Order order =new Order(DateTime.Now,"订单001"); (DateTime createTime, string orderCode) = order; Console.WriteLine($"订单生成时间:{createTime.ToString("yyyy-MM-dd HH-mm-ss")},订单号:{orderCode}");
implicit 隐式转换 explicit 显示转换
静态 ,关键字 operator
public class Student { public Student(string all) { All = all; } public string All { get; set; } public static implicit operator Student(Person person) { return new Student(person.FirstName + " " + person.LastName); } public static explicit operator Person(Student student) { return new Person() { FirstName = student.All }; } }
使用
Console.WriteLine("====隐式转换====="); //隐式转换 Student student = person; Console.WriteLine(student.All); //显示转换 Person person3 = (Person)student; Console.WriteLine("====显示转换====="); Console.WriteLine(person3.FirstName);
ICollection
ICollection 接口是 System.Collections 命名空间中类的基接口,ICollection 接口扩展 IEnumerable,IDictionary 和 IList 则是扩展 ICollection 的更为专用的接口。如果 IDictionary 接口和 IList 接口都不能满足所需集合的要求,则从 ICollection 接口派生新集合类以提高灵活性。
ICollection是IEnumerable的加强型接口,它继承自IEnumerable接口,提供了同步处理、赋值及返回内含元素数目的功能
IEnumerable接口
1、IEnumerable接口是ICollection的父接口,凡实现此接口的类,都具备“可迭代”的能力。
2、IEnumerable接口只定义了一个方法:GetEnumerator,该方法将返回一个“迭代子”对象(或称为迭代器对象),是一个实现了IEnumerator接口的对象实例。
3、凡是实现了IEnumerable接口的类,都可以使用foreach循环迭代遍历。
4` 可以使用yield return 跳出循环 yield break
public IEnumerable<string> GetNames() { yield return "汤姆"; yield return "吉瑞"; }
使用
Console.WriteLine("====使用yied return====="); List<string> names = order.GetNames().ToList(); Console.WriteLine(string.Join(",", names)); Console.WriteLine("====使用yied return end=====");
c# DateTimeOffset DateTime TimeSpan 不同点
比较与日期和时间相关的类型 - .NET | Microsoft Learn
C#中 DateTime , DateTime2 ,DateTimeOffset 之间的小区别 (转载)-CSDN博客
标签:补漏,Console,string,接口,DateTime,WriteLine,查缺,public From: https://www.cnblogs.com/yyxone/p/18187179