当前位置: 首页 > news >正文

郑州建设劳务管理中心网站安徽平台网站建设费用

郑州建设劳务管理中心网站,安徽平台网站建设费用,wordpress 主题 使用教程,金融互助网站建设c#中的约束 在C#中#xff0c;约束#xff08;Constraints#xff09;用于限制泛型类型参数的类型#xff0c;以确保泛型类型或方法在编译时能够满足特定的要求。约束允许开发者指定泛型类型参数必须满足的条件#xff0c;比如实现特定的接口或继承自特定的类。以下是一些… c#中的约束 在C#中约束Constraints用于限制泛型类型参数的类型以确保泛型类型或方法在编译时能够满足特定的要求。约束允许开发者指定泛型类型参数必须满足的条件比如实现特定的接口或继承自特定的类。以下是一些常见的约束类型 类类型约束 (class 或 struct): class 约束指定类型参数必须是引用类型。 struct 约束指定类型参数必须是值类型。 public class MyClassT where T : class {// T 必须是引用类型 } 接口约束 (interface): 接口约束指定类型参数必须实现一个或多个特定的接口。 public interface IInterfaceA { } public interface IInterfaceB { } ​ public class MyGenericClassT where T : IInterfaceA, IInterfaceB {// T 必须同时实现 IInterfaceA 和 IInterfaceB } 构造函数约束 (new()): 构造函数约束指定类型参数必须有一个无参数的公共构造函数。 public class MyGenericClassT where T : new() {public T CreateInstance() new T();// T 必须有一个无参数的公共构造函数 } 基类约束 (: BaseType): 基类约束指定类型参数必须是指定基类的子类。 public class MyBaseClass { } ​ public class MyGenericClassT where T : MyBaseClass {// T 必须是 MyBaseClass 的子类 } 多个约束: 可以对类型参数应用多个约束它们可以组合使用。 public class MyGenericClassT where T : class, IInterfaceA, new() {// T 必须是引用类型实现 IInterfaceA 接口并有一个无参数的公共构造函数 } 类型参数默认值约束 (default): 从C# 8.0开始可以使用 default 约束来指定类型参数必须有一个可用的默认实现。 public class MyGenericClassT where T : IInterfaceA default(T) {// T 必须实现 IInterfaceA 接口并且有一个可用的默认实现 } TimeSpan 在C#中TimeSpan 是一个结构体struct用于表示两个 DateTime 对象之间的时间差或者表示一个持续时间。TimeSpan 结构体包含了时间的天、小时、分钟、秒和毫秒部分。 TimeSpan 提供了多种方法来创建和操作时间间隔例如 TimeSpan.FromSeconds(double)根据秒数创建 TimeSpan。 TimeSpan.FromMinutes(double)根据分钟数创建 TimeSpan。 TimeSpan.FromHours(double)根据小时数创建 TimeSpan。 TimeSpan.FromDays(double)根据天数创建 TimeSpan。 此外TimeSpan 也支持算术运算如加法和减法以及与其他 TimeSpan 结构体的比较。 这里是一个简单的使用 TimeSpan 的示例 // 创建一个表示2小时30分钟的时间间隔 TimeSpan interval new TimeSpan(2, 30, 0); ​ // 创建一个表示15秒的时间间隔 TimeSpan shortInterval TimeSpan.FromSeconds(15); ​ // 计算两个DateTime之间的时间差 DateTime start new DateTime(2024, 1, 1); DateTime end new DateTime(2024, 1, 2); TimeSpan duration end - start; TimeSpan 结构体是不可变的这意味着一旦创建了一个 TimeSpan 实例它的值就不能被修改。任何修改操作都会返回一个新的 TimeSpan 实例。 c#中的defult 在C#中default 关键字用于获取一个类型的默认值。每种类型的默认值定义如下 对于值类型例如 int, double, struct默认值是将所有位都设置为0。例如int 的默认值是 0double 的默认值是 0.0。 对于引用类型例如 class, string默认值是 null。 对于 bool 类型没有默认值因为 bool 是一个值类型并且它只有两个可能的值true 和 false。 对于 NullableT 类型可以为 null 的类型默认值是 null。 使用 default 关键字可以提高代码的可读性和可维护性特别是当你需要初始化一个变量到其类型的默认值时。例如 int number default(int); // 初始化为 0 string text default(string); // 初始化为 null double value default(double); // 初始化为 0.0 此外default 也可以用于泛型类型参数编译器会根据类型参数推断出正确的默认值 ListT list new ListT(); T item default(T); // 根据 T 的类型编译器推断出默认值 default 关键字是一个表达式它在编译时确定类型并在运行时返回该类型的默认值。 c#中operator 在C#中operator 关键字用于定义和重载运算符使得自定义类型可以像内置类型一样使用标准的运算符如 , -, , ! 等。这提高了代码的可读性和一致性。 以下是一些常见的运算符重载示例 一元运算符如 , -, !, , --。 public struct Point {public int X { get; set; }public int Y { get; set; } ​public static Point operator (Point p1, Point p2){return new Point { X p1.X p2.X, Y p1.Y p2.Y };} ​public static Point operator -(Point p){return new Point { X -p.X, Y -p.Y };} } 二元运算符如 , -, *, /, %, , !。 public static bool operator (Point p1, Point p2) {return p1.X p2.X p1.Y p2.Y; } ​ public static bool operator !(Point p1, Point p2) {return !(p1 p2); } 递增和递减运算符 和 --。 public class Counter {private int _value; ​public int Value{get { return _value; }set { _value value; }} ​public static Counter operator (Counter c){c._value;return c;} ​public static Counter operator --(Counter c){c._value--;return c;} } 关系运算符, , , 。 public class Fraction {private int _numerator;private int _denominator; ​public static bool operator (Fraction f1, Fraction f2){// 实现比较逻辑} ​public static bool operator (Fraction f1, Fraction f2){// 实现比较逻辑} } 赋值运算符。 public class MyClass {public int Value { get; set; } ​public static MyClass operator (MyClass a, int value){a.Value value;return a;} } 逻辑运算符, ||。 public class BooleanWrapper {private bool _value; ​public static BooleanWrapper operator (BooleanWrapper b1, BooleanWrapper b2){return new BooleanWrapper { _value b1._value b2._value };} ​public static BooleanWrapper operator ||(BooleanWrapper b1, BooleanWrapper b2){return new BooleanWrapper { _value b1._value || b2._value };} } 重载运算符时需要遵循一些规则和最佳实践 运算符重载应该是直观的并且与内置类型的行为一致。 重载的运算符应该保持对称性例如如果重载了 也应该重载 !。 重载 和 ! 时也应该重载 GetHashCode 和 Equals 方法。 重载 时也应该考虑重载 - 以及可能的 和 -。 避免重载 , |, , | 等位运算符除非你的类型是位字段。
http://www.dnsts.com.cn/news/105305.html

相关文章:

  • 洛阳网站建设找洛阳铭信网络北京发布紧急通知2023年
  • 免费qq空间访客网站WordPress支付宝登录
  • 可以免费进的服务器网站折纸效果网站
  • html 网站开发软件开源商用的商城项目
  • 如何做品牌推广网站设计网站公司湖南岚鸿设计
  • 做网站需要租服务器建网站那家好
  • 自动做图在线网站腾讯云服务器 学生
  • 网站建设工具哪个好用岳阳建设网站公司
  • 网站优化 北京wordpress无法更换主题
  • 海盐网站建设长沙广告公司排行榜
  • wordpress 角色权限表江西seo推广方案
  • 长春本地网站制作公司设立流程七个步骤
  • 男女做的那些事情的网站免费做背景调查的网站
  • 专业做网站建设公司怎么样图库素材网站模板
  • 用手机做网站视频周浦手机网站建设公司
  • 建设用地规划证查询网站网站开发的工作经验要求
  • 网站建设sem怎么做杭州优化商务服务公司
  • 买网站做seo网站建设会议讲话
  • 广西建设职业学院技术教务系统网站上虞网站建设文广网络
  • 上海轨道交通建设查询网站广州建网站开发seo型企业网站
  • 对网站的界面设计分析潮州网站建设推广
  • 设计网站官网有哪些中文域名 网站
  • 北京企业建站定制wordpress删除自豪的
  • 网站建设合同 模板 下载网站建设工作总结6
  • 济南网站排名外包wordpress优酷视频
  • 中国住房城乡建设部官方网站企业网站建设立项书
  • 家居网站建设平台网站做子页跳转到首页
  • 网站开发的主题购物网站设计需要哪些模块
  • 泳衣服饰东莞网站建设线上做笔记的网站
  • 庐江县住房和城乡建设局网站2345浏览器官网