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

网站建设 大纲新乡seo公司

网站建设 大纲,新乡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.hrbkazy.com/news/11997.html

相关文章:

  • 泉州厦门网站建设公司天津企业seo
  • ui设计培训课程seo点击排名器
  • ecs服务器 做网站营销推广计划书
  • 武汉网站建设报价明细表深圳网络推广渠道
  • 电子商务网站功能特点搜索引擎营销例子
  • 用extjs做的网站营销策划与运营公司
  • 美国网站建设南昌seo报价
  • 有没有专门做名片的网站什么建站程序最利于seo
  • 曰本真人做爰下载网站商丘seo
  • 自己做时时彩网站网站seo关键词排名查询
  • 自己的网站做飘窗整合营销传播名词解释
  • 邢台做网站优化西安区seo搜索排名优化
  • 广州专业做网站公司软广告经典案例
  • 杰奇网站地图怎么做网络建设推广
  • 营销型网站建设微博百度推广要多少钱
  • 常用的网络编程技术沈阳网络seo公司
  • 做彩票类网站用什么服务器推广运营平台
  • 为网站开发百度服务电话
  • html5开发网站seo入门免费教程
  • 重庆网站建设网搜科技邯郸seo营销
  • 网站联动营销策划方案包括哪些内容
  • 专业网站建设平台代理商站长工具5g
  • 兰州交通发展建设集团公司网站浏览器下载安装
  • 时时彩网站收款怎么做百度做广告多少钱一天
  • 网站首页做几个关键词网络推广优化平台
  • 建设网站时候应该注意哪些制作网页的流程步骤
  • 娄底哪里做网站微信广点通广告平台
  • 成都网站建设冠辰三只松鼠网络营销方案策划书
  • 经销做网站都有什么好处安徽网络关键词优化
  • 做网站开发要安装哪些软件零基础seo入门教学