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

流量购买网站window2008r2网站建设

流量购买网站,window2008r2网站建设,微信开发者平台注销,自己的网站怎么做淘宝联盟理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str - object o - int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错…理解: 使用等号代替构造函数调用的效果以类似重载操作符的形式定义用于类型转换的函数前者类型转换时候直接写等号赋值语法,后者要额外加目标类型的强制转换stirng str - object o - int a 可以 int a (int)(str as object)转换通过编译,但没有转换逻辑所以运行会报错,explicit就可以解决这个问题,类似 于dart语言中的  源类型对象.to目标类型() 的意思. 什么是隐式转换? int i 1; double d i; 什么是显式转换? double d 1; int i (int)d implicit 隐式转换,相当于封箱操作如: int i 1; object obj i; 如果不理解封箱可以换个例子: int i 1; double d i; double的可取值范围包含了int的全部可取值范围,所以可以int-double隐式转换 explicit 显式转换,相当于拆箱操作如: object obj 1; int i (int)obj; 如果不理解封箱可以换个例子: double i 1; int i (int) d; 为什么有显式和隐式转换? 在C#本身的类型转换中, int, uint , float之类的都可以隐式转换到double,是因为 double可以不丢失精度的情况下保存int, uint , float之类类型的值 而 double要想转换回到其他数值类型,则有可能丢失精度,所以我们要强制转换,也就是显式的指定转换的方式,即 double d 1.1; //int i d;//这样不可以转换 int i  (double)d; //这样可以转换,但是会丢精度 此时 i 的值为1而不是1.1(向下取整,即Math.Floor()函数执行后再转为int的相同作用. 故, 方便,是隐式转换的主要目的 明确,精确,安全,是显式转换的主要目的 implicit/explicit的用法 固定以 public static implicit/explicit operator 目标类型(源类型 源类型形参) 的方式使用. 假设我们有人民币Rmb和美元Dollar类 评估资产的时候,默认都用Dollar来作为通用单位,当需要换成Rmb或者其他比重比如Krw的时候,需要显式的,明确的知道要转换的目标币种的类型. 比如隐式转换 Rmb-Dollar public static implicit operator Dollar(Rmb rmb) { //汇率相关的计算 } 再比如显式转换 Dollar-Rmb public static explicit operator Rmb(Dollar rmb) { //汇率先关的计算 } 使用时,隐式转换直接用Rmb可以直接给Dollar赋值 var rmb new Rmb(); var dollar rmb;//可以正常编译通过并在运行时正确转换 而 var doaalr new Dollar(); //var rmb dollar;//不可以通过编译,因为没有实现从dollar到rmb的隐式转换 var rmb (Rmb)dollar;//可以通过编译并在运行时正确转换. 设计建议: 不管隐式还是显式转换都要保证类型安全不溢出不抛错 隐式转换设计时尽量源类型和目标类型不要有太多的偏差,否则容易造成歧义,如 var person new Person(){ Id 1111 }; int id person; //这种虽然是方便从person中取出Id属性赋值给id,但理解可能会有偏差. 尽管我们可以用 int personId person; 仍然是有较大的歧义.读代码的人会想id怎么会是一个人对象呢? 所以都不如 var id person.Id来的直观. 像public class ArgsInfo内定义一个隐式转换从 string [] 到 ArgsInfo就是一个较好的设计 //一段精简的示例代码,实际设计会比这个健壮,仅为了表示该类和 string[] args较好耦合.public class ArgsInfo{private readonly Dictionarystring,string _args new();public static implicit operator ArgsInfo(string[] args){var result new ArgsInfo();foreach (var arg in args){var kv arg.Split();if (kv.Length 2){result._args[kv[0]] kv[1];}}return result;}public override string ToString(){var sb new StringBuilder();foreach (var (key, value) in _args){sb.AppendLine(${key}{value});}return sb.ToString();}}public static void Main(string[] args){//就像调用了 var argsInfo new ArgsInfo(args);ArgsInfo argsInfo args;Console.WriteLine(argsInfo);} 显示转换设计时, 语义会更明确, 但必要的类型转换说明不可少.丢不丢精度,等都要写清 由于不像函数ConvertXXXToYYY, src.ToDestTypeint(), src.toInt()等直观的通过名称就知道含义且可以传递各种参数如精度之类的,所以保证类型转换的安全稳定和易维护拓展很重要. 完整示例代码带注释: 新建一个cs文件,直接运行Test方法看看效果吧 Rider截图: /*implicit:隐式转换explicit:显式转换*/using System.Globalization;namespace CS2TS.Test._1_InTestCSFiles;/// summary /// 常量值定义 /// /summary public static class Constant {/// summary/// 1美元换多少人民币/// /summarypublic const double DollarToRmb 6.5;/// summary/// 1美元换多少韩元/// /summarypublic const double DollarToKrw 1100; }/// summary /// 人 /// /summary public class Person {/// summary/// 名字/// /summarypublic string Name { get; set; } 无名氏;/// summary/// 资产,默认以可隐式转换的美元表示,转换成其他货币需要显式转换标明意图/// /summarypublic Dollar Money { get; set; } new(); }public class Rmb {public double RmbAmount { get; set; }public static implicit operator Dollar(Rmb rmb){return new Dollar{DollarAmount rmb.RmbAmount / Constant.DollarToRmb};}public static implicit operator Rmb(Dollar dollar){return new Rmb{RmbAmount dollar.DollarAmount * Constant.DollarToRmb};}public static explicit operator Krw(Rmb rmb){//先把rmb转换成dollar,然后再转换成krwreturn (Dollar)rmb;}public static explicit operator Rmb(Krw krw){//先把krw转换成dollar,然后再转换成rmbreturn (Dollar)krw;} }/// summary /// 韩元 /// /summary public class Krw {public double KrwAmount { get; set; }/*可以直接用美元换韩元如果换成人民币则需要显式转换*/public static implicit operator Dollar(Krw krw){return new Dollar{DollarAmount krw.KrwAmount / Constant.DollarToKrw};}public static implicit operator Krw(Dollar dollar){return new Krw{KrwAmount dollar.DollarAmount * Constant.DollarToKrw};}public static explicit operator Rmb(Krw krw){//先把krw转换成dollar,然后再转换成rmbreturn (Dollar)krw;}public static explicit operator Krw(Rmb rmb){//先把rmb转换成dollar,然后再转换成krwreturn (Dollar)rmb;} }/// summary /// 美元,作为中间货币,人民币和韩元都可以直接换成美元,但是美元要换成什么,需要显式转换 /// /summary public class Dollar {public double DollarAmount { get; set; }public override string ToString(){return DollarAmount.ToString(CultureInfo.InvariantCulture);} }public class ImplicitAndExplicit {public static void Test(){#region 小明,美元换韩元和人民币var ming new Person{Name 小明,Money new Dollar{DollarAmount 1000}};//他想换成韩元的或者人民币的时候,需要显示的转换var rmbOfMing (Rmb)ming.Money;Console.WriteLine($小明有{ming.Money.DollarAmount}美元,换成人民币是{rmbOfMing.RmbAmount}元);var krwOfMing (Krw)ming.Money;Console.WriteLine($小明有{ming.Money.DollarAmount}美元,换成韩元是{krwOfMing.KrwAmount}元);#endregion#region 小红,人民币换韩元Console.WriteLine(小红只有人民币1000元,但是出国换货币的时候,都是央行的汇率,所以她的人民币要先转换成美元,然后再转换成其他货币);var rmbOfHong new Rmb{RmbAmount 1000};var hong new Person{Name 小红,// 不需要显示转换,因为Rmb有implicit转换成DollarMoney rmbOfHong};//需要显示转换,因为Dollar没有implicit转换成Rmbvar krwOfHong (Krw)hong.Money;Console.WriteLine($小红有{hong.Money.DollarAmount}美元,换成韩元是{krwOfHong.KrwAmount}元);#endregion#region 小黑,韩元换人民币Console.WriteLine(小黑只有韩元1000元,但是出国换货币的时候,都是央行的汇率,所以她的韩元要先转换成美元,然后再转换成其他货币);var krwOfHei new Krw{KrwAmount 1000};var hei new Person{Name 小黑,// 不需要显示转换,因为Krw有implicit转换成DollarMoney krwOfHei};//需要显示转换,因为Dollar没有implicit转换成Rmbvar rmbOfHei (Rmb)hei.Money;Console.WriteLine($小黑有{hei.Money.DollarAmount}美元,换成人民币是{rmbOfHei.RmbAmount}元);#endregion#region 统一用Dollar来表示资产Console.WriteLine($小明有{ming.Money.DollarAmount}美元);Console.WriteLine($小红有{hong.Money.DollarAmount}美元);Console.WriteLine($小黑有{hei.Money.DollarAmount}美元);#endregion#region 统一用Rmb来表示资产Console.WriteLine($小明有{((Rmb)ming.Money).RmbAmount}人民币);Console.WriteLine($小红有{((Rmb)hong.Money).RmbAmount}人民币);Console.WriteLine($小黑有{((Rmb)hei.Money).RmbAmount}人民币);#endregion#region 统一用Krw来表示资产Console.WriteLine($小明有{((Krw)ming.Money).KrwAmount}韩元);Console.WriteLine($小红有{((Krw)hong.Money).KrwAmount}韩元);Console.WriteLine($小黑有{((Krw)hei.Money).KrwAmount}韩元);#endregion} }
http://www.hkea.cn/news/14396449/

相关文章:

  • 长春网站优化公司百度网盟网站有哪些
  • 万户网站协作管理系统网站备案年审
  • 网站建设维护是啥意思东莞如何搭建网站建设
  • wordpress网站跳转nginxphp网站识别手机
  • 搜索网站怎么做学院校园网网站建设情况
  • 河南网站建设app开发丽水专业做网站
  • 广西新站seo上海浦东哪里有做网站的公司
  • 天津网站建设诺亚音乐如何到wordpress
  • 网站如何做301跳转网站如何做百度搜索优化
  • 怎么做福彩网站查域名的网址
  • 个体工商户网站备案流程平面设计怎么接单
  • wdcp新建网站第一次和两个老头做网站
  • 濂溪区建设局网站怎么做百度自己的网站空间
  • 做网站公众号要多少钱广州建设公司
  • 网站优化排名工具东莞微网站
  • 供求信息网站开发背景北碚区建设银行网站
  • 西安好玩的地方排行榜宁波网络seo推广
  • 上海设立企业网站做织梦网站的心得体会
  • 大型网站构建实施方案做网站需要多大尺寸
  • 没有网站如何做SEO推广有用吗企业网站建设费用需要多少钱
  • wap网站案例自助提交网站
  • 做公众号的必备参考网站江门网站建设 卓华
  • 免费提供ppt模板的网站化妆培训网站模板
  • 快速建设网站视频教程虚拟机可以做两个网站
  • 湖北省建设工程招标网站网页游戏开服表大全
  • 芜湖企业网站建设互联网趋势发展前景
  • 胶南网站建设多少钱淘宝券搜索网站怎么做
  • 网站建设0doit赣州网站建设哪家便宜
  • 小程序平台推广方案优化方案生物必修一
  • 怎样做娱乐网站网站免费永久