博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20160423
阅读量:6308 次
发布时间:2019-06-22

本文共 2588 字,大约阅读时间需要 8 分钟。

  昨天是周五太放松了,晚上没有加班只顾着放松,玩了一晚上,今天又是睡了一上午,没有学习。这下放松过分了没有总结,也没有完成任务。今天来总结一下昨天的学习成果。

  昨天设计的数据库今天老大点评了一下发现问题确实很多。比如用户表和权限表的拆分问题,是否应该拆分取决于权限的使用频率。使用频率高时因该拆分。

  对C#源代码执行过程的思考(不懂)

  构造函数总在new一个对象之前执行。

  P p=new p();

  因为赋值运算符(=)是从右向左执行,先执行new p,这时候执行类P的构造函数,然后将值赋给p,将p存到内存中。

  两个变量的值交换(不使用第三个变量)

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace Test_20160421 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             int a = 10;int b = 21;14             a = a + b;15             b = a - b;16             a = a - b;17             //change(ref  a,ref   b);18             Console.WriteLine("a={0},b={1}",a,b);19             Console.ReadKey();20         }21         #region  自定义方法22         /// 23         /// 自定义交换方法24         /// 25         /// 第一个出入的变量26         /// 第二个出入的变量27         private static void  change( ref int a,ref int b)28         {29             a = a + b;30             b = a - b;31             a = a - b;32         }33         #endregion34     }35 }
View Code

  使用ref引用传递

  或者直接用数学计算交换两个int 型的值

使用ref是引用传递,传入的是a和b的地址在方法中对值得修改会影响a和b的值

不使用ref是值传递,在栈里右新建了一个a和一个b(作用域为方法内),将main函数中a,b的值赋给方法内的a和b;方法中只是对方法内的a和b操作没有影响到main函数中的a和b的值

第二种方法 异或运算交换a和b的值

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace Test_20160421 8 { 9     class Program10     {11         static void Main(string[] args)12         {13             int a = 10;int b = 21;14             a = a ^ b;15             b = a ^ b;16             a = a ^ b;17             /*18              * ^表示异或运算即同一位如果都为0或都为1时结果为1,否则结果为0;19              * a=10,转化为二进制为  0101020              * b=21,转化为二进制为  1010121              * 14行a=a^b 结果为      0000022              * 15行b=a^b 结果为      01010 =1023              * 16行a=a^b 结果为      10101 =2124              */25             //a = a + b;26             //b = a - b;27             //a = a - b;28             //change(ref  a,ref   b);29             Console.WriteLine("a={0},b={1}",a,b);30             Console.ReadKey();31         }32         #region  自定义方法33         /// 34         /// 自定义交换方法35         /// 36         /// 第一个出入的变量37         /// 第二个出入的变量38         private static void  change( ref int a,ref int b)39         {40             a = a + b;41             b = a - b;42             a = a - b;43         }44         #endregion45     }46 }

这两种方法都是针对整形的,其他类型不知道怎么才能只使用两个变量交换值。

 

 

 

大家看到我的学习笔记有什么不足或者建议的希望留言评论一下。

 

转载于:https://www.cnblogs.com/Li-zhipengBlog/p/5424514.html

你可能感兴趣的文章
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>
oracle数据泵导入分区表统计信息报错(四)
查看>>
spring技术内幕读书笔记之IoC容器的学习
查看>>
细说多线程(五) —— CLR线程池的I/O线程
查看>>
JavaScript instanceof和typeof的区别
查看>>
Hadoop文件系统详解-----(一)
查看>>
《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(8)--- 主动器...
查看>>
状态码
查看>>
我的友情链接
查看>>
用sqlplus远程连接oracle命令
查看>>
多年一直想完善的自由行政审批流程组件【2002年PHP,2008年.NET,2010年完善数据设计、代码实现】...
查看>>