首页 文章 精选 留言 我的

精选列表

搜索[c ],共10000篇文章
优秀的个人博客,低调大师

C# efcore 控制台实例

public class DefaultDbContext : DbContext { public DefaultDbContext() { } public DbSet<User> Users { set; get; } public DbSet<UserDetail> UserDetails { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string sqlConnection = "server=127.0.0.1;port=3306;user=root;password=123456;database=efcoredemo"; optionsBuilder.UseMySql(sqlConnection); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration<User>(new UserConfiguration()); modelBuilder.ApplyConfiguration<UserDetail>(new UserDetailConfiguration()); base.OnModelCreating(modelBuilder); } } public class UserConfiguration : IEntityTypeConfiguration<User> { public UserConfiguration() { } public void Configure(EntityTypeBuilder<User> builder) { builder.ToTable("user"); builder.HasIndex(q => q.IdCard).IsUnique(); builder.HasOne(q => q.UserDetail).WithOne(q=>q.User).HasForeignKey<User>(q => q.userDetailId); } } public class UserDetailConfiguration : IEntityTypeConfiguration<UserDetail> { public UserDetailConfiguration() { } public void Configure(EntityTypeBuilder<UserDetail> builder) { builder.ToTable("userdetail"); builder.Property(q => q.Work).HasMaxLength(500); } } [Table("user")] public class User { [Key] public int Id { set; get; } [Required] public string IdCard { get; set; } [Column("sex")] public bool Sex { get; set; } [Column("name")] public string Name { set; get; } [Column("createTime")] public DateTime CreateTime { set; get; } = DateTime.Now; [Column("modifyTime")] public DateTime ModifyTime { set; get; } = DateTime.Now; [Column("userDetailId")] public int userDetailId { get; set; } public UserDetail UserDetail { get; set; } } [Table("userdetail")] public class UserDetail { [Key] public int Id { get; set; } [Column("email")] [StringLength(50)] public string Email { get; set; } [Column("phone")] [StringLength(20)] public string Phone { get; set; } [Column("note")] [StringLength(200)] public string Note { get; set; } [Column("lastLoginTime")] public DateTime LastLoginTime { get; set; } [Column("work")] public string Work { get; set; } public User User { get; set; } } class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); using (DefaultDbContext db = new DefaultDbContext()) { //db.Database.MigrateAsync(); //db.Database.EnsureCreated(); var list = db.Database.GetPendingMigrations(); if (list.Count() > 0) { db.Database.MigrateAsync(); } //var user = new User { Name = "张三", Sex = false, IdCard = "513701199109121331" }; //db.Users.Add(user); //db.SaveChanges(); //System.Console.Write(db.Users.ToList()); Console.ReadKey(); } } }

优秀的个人博客,低调大师

C# 中的IComparable和IComparer

前言 在开发过程中经常会遇到比较排序的问题,比如说对集合数组的排序等情况,基本类型都提供了默认的比较算法,如string提供了按字母进行排序,而int整数则是根据整数大小进行排序.但是在引用类型中(具有多个字段),那么这个排序当然也是取决于我们特定的值。 IComparable接口 该接口由其值可以排序或排序的类型实现,并提供强类型的比较方法以对泛型集合对象的成员进行排序,例如数字可以大于第二个数字,一个字符串可以在另一个字符串之前以字母顺序出现。他要求实现类型定义的一个方法,CompareTo(T)该方法指示当前实现在排序顺序中的位置是在同一个类型和第二个对象之前、之后还是与其相同。通常,不会直接从开发人员代码中调用方法。相反他由List.Sort()和Add等方法自动调用。 通常,提供Icomparable实现的类型还IEquatable实现接口。IEquatable接口Equals定义方法,该方法确定实现类型的实例的相等性。 CompareTo(T)方法的实现必须Int32返回具有以下三个值之一的,如下表所示。 值 含义 小于零 此对象在排序顺序中位于CompareTo方法所指定的对象之前。 零 此当前实例在排序顺序中与CompareTo方法参数指定的对象出现在同一位置。 大于零 此当前实例位于排序顺序中由CompareTo方法自变量指定的对象之后。 示例: class Student : IComparable { public string Name { get; set; } public int Age { get; set; } public int CompareTo(object obj) { if (!(obj is Student)) { throw new ArgumentException("Compared Object is not of student"); } Student student = obj as Student; return Age.CompareTo(student.Age); } } Ps:我们根据通过Age(int)来进行我们的排序 执行测试 class Program { static void Main(string[] args) { ArrayList studentList = new ArrayList { new Student{Name="a",Age=9 }, new Student{Name="a3",Age=7 }, new Student{Name="a1",Age=6 }, new Student{Name="a2",Age=10 }, }; studentList.Sort(); StudentComparable(studentList); Console.ReadLine(); } private static void StudentComparable(ArrayList studentList) { foreach (Student item in studentList) { Console.WriteLine("Name:{0},Age:{1}", item.Name, item.Age); } } } 输出如下 IComparer接口 IComparable 接口的CompareTo方法一次只能对一个字段进行排序,因此无法对不同的属性进行排序。IComparer接口提供了Compare方法,该方法比较两个对象并返回一个值,该值指示一个对象小于,等于或大于另一个对象。实现IComparer接口的类必须提供比较两个对象的Compare方法。例如,您可以创建一个StudentComparer类,该类实现IComparer,并具有一个Compare方法,该方法按Name比较Student对象。然后,您可以将StudentComparer对象传递给Array.Sort方法,它可以使用该对象对Student对象的数组进行排序。 示例 class StudentComparer : IComparer { public int Compare(object x, object y) { Student x1 = x as Student; Student y1 = y as Student; return x1.Name.CompareTo(y1.Name); } } Ps:我们根据Name(string)进行排序 执行测试 class Program { static void Main(string[] args) { ArrayList studentList = new ArrayList { new Student{Name="a",Age=9 }, new Student{Name="a3",Age=7 }, new Student{Name="a1",Age=6 }, new Student{Name="a2",Age=10 }, }; studentList.Sort(new StudentComparer()); StudentComparable(studentList); Console.ReadLine(); } private static void StudentComparable(ArrayList studentList) { foreach (Student item in studentList) { Console.WriteLine("Name:{0},Age:{1}", item.Name, item.Age); } } } 输出结果如下 IComparable和IComparer 上述示例中我们将对象进行了多次的装箱和拆箱,那么此时我们可以将方法改为泛型的,泛型的出现也让我们避免了装箱和拆箱的资源浪费. 最终我们实现的代码片段如下: IComparable class Student : IComparable<Student> { public string Name { get; set; } public int Age { get; set; } public int CompareTo([AllowNull] Student other) { return Age.CompareTo(other.Age); } } IComparer class StudentComparer : IComparer<Student> { public int Compare([AllowNull] Student x, [AllowNull] Student y) { return x.Name.CompareTo(y.Name); } } 总结 参考:https://docs.microsoft.com/en-us/dotnet/api/system.icomparable-1?view=netframework-4.8 示例:https://github.com/hueifeng/BlogSample/tree/master/src/CompareDemo

优秀的个人博客,低调大师

C#中Equals和==的比较

转自:https://www.cnblogs.com/huangshuhua/p/6738944.html 一、值类型的比较 对于值类型来说 两者比较的都是”内容”是否相同,即 值 是否一样,很显然此时两者是划等号的。 int i = 9; int j = 9; Console.WriteLine("i==j"+(i==j)); //true Console.WriteLine("i.Equals(j)"+(i.Equals(j))); //true 二、引用类型的比较 对于引用类型来说,等号(==)比较的是两个变量的”引用” 是否一样,即是引用的”地址”是否相同。而对于equals来说仍然比较的是变量的 ”内容” 是否一样。 1、字符串的比较 string s1 = "abc"; string s2 = "abc"; Console.WriteLine("s1==s2"+(s1==s2));//true Console.WriteLine("s1.Equals(s2)"+(s1.Equals(s2)));//true string是微软封装的一个字符串类,在内部他已经对 = = 操作符进行了重写。重写后他比较的则是两个变量的内容是否相同,重写后的 = = 操作符内部调用的即是 equals 方法,所以输出的是true 2、 自定义的其他引用类型——一 person类为例 Person p1 = new Person("aa",18); Person p2 = new Person("aa",18); Console.WriteLine("p1==p2"+(p1==p2));//false Console.WriteLine("p1.Equals(p2)"+p1.Equals(p2));//false 对于 p1==p2 比较的结果是false,这点是毫无疑问的,因为他俩是两个不同的变量,所以引用的地址也是不同的。但是对于p1.Equals(p2) 返回false,可能有人会产生疑问,p1 和p2的内容是相同的啊,为什么他俩的比较结果却是为false呢?。原因就在于在Equals是Object中的一个虚方法,而person类中没有对她进行重写,因此此时调用的仍是父类中的Equals方法。但是父类是无法知道你都有哪些成员字段的,因此返回的是false。要想让他能够比较两个变量的内容是否相同,那就应该重写Equals方法 public override bool Equals(object obj) { Person p = (Person)obj; return (this.Name == p.Name) && (this.Age == p.Age); } 总结:Equals比较的永远是变量的内容是否相同,而= =比较的则是引用地址是否相同(前提:此种类型内部没有对Equals 或= = 进行重写操作,否则输出可能会有不同)。string 类型是个特例,因为他的内部对这两个都进行了重写。

优秀的个人博客,低调大师

c++ 浅拷贝和深拷贝

class with point member(带指针的类),一定有copy ctor(拷贝构造)和copy op=(拷贝赋值) 浅拷贝(讲这个概念是为了跟你解释为什么一定要写自己的版本): 如果你不写拷贝构造和拷贝赋值,系统会为你默认生成这两个函数。 而用系统里面默认生成的函数,则会发生下图中a和b的指针都指向“HELLO”,而“WORLD”没有指针指着它(这种情况叫内存泄漏)。 两个指针指向同一块内存也是危险的,因为你通过a改变字符串的时候,b所指的内容也会随之改变。如图: 在编程里面。alias(别名)是一件危险的事情。 深拷贝如下图(拷贝构造的例子) 上图是自己写的拷贝构造函数:调用该函数之后,系统先申请内存,然后把传入的参数拷贝到新申请的空间上,这就是深拷贝。

优秀的个人博客,低调大师

C# 实现登录并跳转界面

Program.cs文件添加如下内容 Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Login()); Login login = new Login(); //界面转换 login.ShowDialog(); if (login.DialogResult == DialogResult.OK) { login.Dispose(); Application.Run(new MainForm()); } else if (login.DialogResult == DialogResult.Cancel) { login.Dispose(); return; } 在登陆界面添加如下内容 //跳转主界面 this.DialogResult = DialogResult.OK; this.Dispose(); this.Close(); 网名:浩秦; 邮箱:root#landv.pw; 只要我能控制一個國家的貨幣發行,我不在乎誰制定法律。金錢一旦作響,壞話隨之戛然而止。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

用户登录
用户注册