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

asp 企业网站源码浙江小九天建设集团网站

asp 企业网站源码,浙江小九天建设集团网站,邯郸自媒体有哪些,中小企业网站seo用户定义的显式和隐式转换运算符 参考代码 用户定义的显式和隐式转换运算符 - 提供对不同类型的转换 | Microsoft Learn 代码例程 using System;public readonly struct Digit {private readonly byte digit;public Digit(byte digit){if (digit > 9){throw new Argumen…

用户定义的显式和隐式转换运算符

参考代码

用户定义的显式和隐式转换运算符 - 提供对不同类型的转换 | Microsoft Learn

代码例程

using System;public readonly struct Digit
{private readonly byte digit;public Digit(byte digit){if (digit > 9){throw new ArgumentOutOfRangeException(nameof(digit), "Digit cannot be greater than nine.");}this.digit = digit;}public static implicit operator byte(Digit d) => d.digit;public static explicit operator Digit(byte b) => new Digit(b);public override string ToString() => $"{digit}";
}public static class UserDefinedConversions
{public static void Main(){var d = new Digit(7);byte number = d;Console.WriteLine(number);  // output: 7Digit digit = (Digit)number;Console.WriteLine(digit);  // output: 7}
}

自实现 隐式运算符转换例程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp5
{class Person{public string Name { get; set; }public int age { get; set; }public Person(string name, int age){Name = name;this.age = age;}/// <summary>/// 自定义隐式转换/// </summary>/// <param name="p"></param>public static  implicit operator string (Person p){return p.Name;}}internal class Program{static void Main(string[] args){Person p1 = new Person("张三",20);Person p2 = new Person("李四", 30);string username = p1 + p2; //自定义对象隐式转换Console.WriteLine(username);Console.ReadLine();}}
}

运行结果

上面当然也可以适用于年龄,只需要修改返回值即可。

自实现 显式运算符转换例程

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp7
{class Person{public string Name { get; set; }public int age { get; set; }public Person(string name, int age){Name = name;this.age = age;}/// <summary>/// 自定义隐式转换/// </summary>/// <param name="p"></param>//public static implicit operator string(Person p)//{//    return p.Name;//}//public static implicit operator Person(string name)//{//    return new Person(name, 0);//}///运算符重载public static string operator +(Person p1, Person p2){return p1.Name + p2.Name; }}internal class Program{static void Main(string[] args){Person p1 = new Person("张三", 20);Person p2 = new Person("李四", 30);//string username = p1 + p2; //自定义对象隐式转换//Console.WriteLine(username);//Person p3 = "王五"; //强转,与视频中不同的时前面没有加括号//Person p3a = (Person)"赵六"; //视频中加了括号强转//Console.WriteLine(p3.Name + " " + p3.age.ToString());//Console.WriteLine(p3a.Name + " " + p3a.age.ToString());string username = p1 + p2; //自定义对象 + 重载Console.WriteLine(username);Console.ReadLine();}}
}

运行结果

与上面的相同,注意这里时显式运算符重载。

 

强制类型转换

自定义对象强转转换

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp6
{class Person{public string Name { get; set; }public int age { get; set; }public Person(string name, int age){Name = name;this.age = age;}/// <summary>/// 自定义隐式转换/// </summary>/// <param name="p"></param>//public static implicit operator string(Person p)//{//    return p.Name;//}public static implicit operator Person(string name){return new Person(name, 0);}}internal class Program{static void Main(string[] args){Person p1 = new Person("张三", 20);Person p2 = new Person("李四", 30);//string username = p1 + p2; //自定义对象隐式转换//Console.WriteLine(username);Person p3 = "王五"; //强转,与视频中不同的时前面没有加括号Person p3a = (Person)"赵六"; //视频中加了括号强转Console.WriteLine(p3.Name + " " + p3.age.ToString());Console.WriteLine(p3a.Name + " " + p3a.age.ToString());Console.ReadLine();}}
}

运行结果(注意没有初始化年龄,使用默认)

+运算符重载

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp8
{class Person{public string Name { get; set; }public int age { get; set; }public Person(string name, int age){Name = name;this.age = age;}/// <summary>/// 自定义隐式转换/// </summary>/// <param name="p"></param>//public static implicit operator string(Person p)//{//    return p.Name;//}//public static implicit operator Person(string name)//{//    return new Person(name, 0);//}///运算符重载public static string operator +(Person p1, Person p2){return p1.Name + p2.Name;}public static Person operator ++(Person p){p.age++;return p;}}internal class Program{static void Main(string[] args){Person p1 = new Person("张三", 20);Person p2 = new Person("李四", 30);//string username = p1 + p2; //自定义对象隐式转换//Console.WriteLine(username);//Person p3 = "王五"; //强转,与视频中不同的时前面没有加括号//Person p3a = (Person)"赵六"; //视频中加了括号强转//Console.WriteLine(p3.Name + " " + p3.age.ToString());//Console.WriteLine(p3a.Name + " " + p3a.age.ToString());//string username = p1 + p2; //自定义对象 + 重载//Console.WriteLine(username);p1++;Console.WriteLine(p1.age.ToString());Console.ReadLine();}}
}

 运行结果(略)

附一个微软的例子

public readonly struct Fraction
{private readonly int num;private readonly int den;public Fraction(int numerator, int denominator){if (denominator == 0){throw new ArgumentException("Denominator cannot be zero.", nameof(denominator));}num = numerator;den = denominator;}public static Fraction operator +(Fraction a) => a;public static Fraction operator -(Fraction a) => new Fraction(-a.num, a.den);public static Fraction operator +(Fraction a, Fraction b)=> new Fraction(a.num * b.den + b.num * a.den, a.den * b.den);public static Fraction operator -(Fraction a, Fraction b)=> a + (-b);public static Fraction operator *(Fraction a, Fraction b)=> new Fraction(a.num * b.num, a.den * b.den);public static Fraction operator /(Fraction a, Fraction b){if (b.num == 0){throw new DivideByZeroException();}return new Fraction(a.num * b.den, a.den * b.num);}public override string ToString() => $"{num} / {den}";
}public static class OperatorOverloading
{public static void Main(){var a = new Fraction(5, 4);var b = new Fraction(1, 2);Console.WriteLine(-a);   // output: -5 / 4Console.WriteLine(a + b);  // output: 14 / 8Console.WriteLine(a - b);  // output: 6 / 8Console.WriteLine(a * b);  // output: 5 / 8Console.WriteLine(a / b);  // output: 10 / 4}
}

参考讲解实例,老师讲得非常好,希望大家多多关注ub主

c shape c# 自定义隐式转换与运算符重载_哔哩哔哩_bilibiliicon-default.png?t=N176https://www.bilibili.com/video/BV1rg411A7QU/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=e821a225c7ba4a7b85e5aa6d013ac92e

特此记录

anlog

2023年2月11日

 

http://www.yayakq.cn/news/334997/

相关文章:

  • 加强网站备案管理开网店怎么开 新手需要多少资金
  • 做网站必须认证吗杭州知名的企业网站建设策划
  • 珠宝出售网站模板网站建设总体说明书
  • 优秀企业网站模板WordPress 秒开
  • 有什么网站可以做运动郑州给公司做网站的公司
  • 深圳网站制作的免费推广途径与原因
  • 网站seo优化排名wordpress jianux
  • wordpress建站百科浙江省通信管理局 网站备案 管理部门
  • 深圳网站建设公司是临沂网站建设培训
  • 网站策划与建设阶段的推广wordpress 小程序投稿
  • 网站域名自己做免费装潢设计网站flash源码模版php生成html免费下载
  • 找个男做那个视频网站教师做班级网站
  • 江南大学做网站企业安全文化建设方案
  • 南京省住房和城乡建设厅网站网络架构方案书
  • 公司网站模板侵权案例手机站
  • 国外做装修设计网站兰州网站做的好点的公司
  • 东莞市建设局网站6wordpress怎么做目录
  • 网站建设需求分析有什么内容砀山县住房和城乡建设局网站
  • 网站 seo 设置百度查询入口
  • 北京海淀国税局网站营销策划方案ppt模板
  • 广西网站建设timkee申请企业邮箱步骤是什么?
  • 门户网站技术方案网上国网下载
  • 考试网站模版可以做家装设计的网站
  • 做seo时网站发文目的定制家具生产厂家
  • 网站友情链接模块学校微信公众号怎么创建
  • 领手工在家做的网站抖音头像的网站制作教程
  • 做编程的网站一个月多少钱网站开发科技公司
  • 东莞网站公司建设网站乐高编程培训
  • 山西住房与建设部网站美容院装修
  • 专门做生鲜的网站河北省建设厅网站怎么登陆