首页 > 编程语言 >C# implicit隐式转换

C# implicit隐式转换

时间:2022-09-27 23:33:28浏览次数:46  
标签:转换 C# NoteScale implicit 隐式 Vector MainWindow public

今天看书,上面介绍implicit和explicit相对冷门,用的较少。

这个implicit类型虽然冷门,但真的很有用。我在自己的项目里就用了这个

上Demo,

 1     public partial class MainWindow : Window
 2     {
 3         public MainWindow()
 4         {
 5             InitializeComponent();
 6             this.ManipulationDelta += MainWindow_ManipulationDelta;
 7         }
 8         private void MainWindow_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
 9         {
10             Vector vectorScale = e.DeltaManipulation.Scale;
11             NoteScale scale = vectorScale;
12         }
13     }

如上图,我需要将Manipulation事件中的Scale缩放变量,转换为一个比较好阅读且有指定意义的类NoteScale。

因为原来的向量Vector,在后续的代码传递中很不好理解。

NoteScale,这个就是自己项目中的业务专业词汇了,具体名称可以根据业务去命名

 1     /// <summary>
 2     /// 缩放系数
 3     /// </summary>
 4     class NoteScale
 5     {
 6         public double X { get; set; }
 7         public double Y { get; set; }
 8 
 9         public static implicit operator NoteScale(Vector vector)
10         {
11             return new NoteScale()
12             {
13                 X = vector.X,
14                 Y = vector.Y,
15             };
16         }
17         public static implicit operator Vector(NoteScale noteScale)
18         {
19             return new Vector()
20             {
21                 X = noteScale.X,
22                 Y = noteScale.Y,
23             };
24         }
25     }

如上图,Vector和NoteScale之间相互转换,是通过implict(隐式转换类型)和operator(用来定义类型转换)俩个关键字实现。

而explicit是显示转换类型,Vector和NoteScale之间强制转换,NoteScale scale = (NoteScale)vectorScale;

标签:转换,C#,NoteScale,implicit,隐式,Vector,MainWindow,public
From: https://www.cnblogs.com/kybs0/p/16736438.html

相关文章

  • docker命令自动补全
    1、安装bash-completionyuminstall-ybash-completion2、重新连接docker服务器使docker补全命令生效,或者建立新的远程连接docker服务器。输入dockerpu,再Tab键两......
  • docker 创建镜像images
    1.先下载基础镜像,并准备好你要部署的jar包 2.编写dockerfile 文件FROMascdc/jdk8:latestRUNmkdir-p/home/app/demo&&chmod777/home/app/demo&&cd/home......
  • English words chapter 20220927
    ......
  • 实验2:Open vSwitch虚拟交换机实践
    (一)基础要求执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图开启MininetCLI并执行pingall命令的截图上述目录下查看OVS流表的命令结果截图wireshark......
  • copy2word
    ;Thisscriptcreatesanewdocumenttoholdstufffromtheclipboard.;Thisscriptcreatesanewdocumenttoholdstufffromtheclipboard.;Usage;-Hig......
  • tomcat
    tomcat目录一.简介二.部署tomcat一.简介Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍......
  • JavaWeb5 JDBC
       packagecom.itheima.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLOutput;importjava.sql.Statement;publi......
  • 四、typescript类属性的封装
    类属性的封装:通过属性的修饰符实现private:只有在类的内部进行访问和修改public:可以在任意位置访问和修改。默认时publicprotected:可以在当前类和当前类的子类中访问......
  • TCGA代码分析流程 - 0. 安装R包
    1.设置镜像options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor/")options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))......
  • TCGA代码分析流程 - 1.1. 下载表达矩阵和临床信息数据
    0. 在工作目录建立存储文件夹options(stringsAsFactors=F)library(stringr)cancer_type="TCGA-CHOL"if(!dir.exists("clinical"))dir.create("clinical")if(!dir.......