• 20160423


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

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

      对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 Program
    10     {
    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         /// <summary>
    23         /// 自定义交换方法
    24         /// </summary>
    25         /// <param name="a">第一个出入的变量</param>
    26         /// <param name="b">第二个出入的变量</param>
    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         #endregion
    34     }
    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 Program
    10     {
    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,转化为二进制为  01010
    20              * b=21,转化为二进制为  10101
    21              * 14行a=a^b 结果为      00000
    22              * 15行b=a^b 结果为      01010 =10
    23              * 16行a=a^b 结果为      10101 =21
    24              */
    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         /// <summary>
    34         /// 自定义交换方法
    35         /// </summary>
    36         /// <param name="a">第一个出入的变量</param>
    37         /// <param name="b">第二个出入的变量</param>
    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         #endregion
    45     }
    46 }

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

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

  • 相关阅读:
    nuget 微软开源项目工具库
    Creating a REST service using ASP.NET Web API
    [转载]返璞归真 asp.net mvc (10) asp.net mvc 4.0 新特性之 Web API
    【转载】返璞归真 asp.net mvc (11) asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
    ASP.NET MVC3使用PagedList实现分页导航
    asp.net mvc api 异常捕捉
    atitit.提升软件开发效率大的总结O5
    atitit.dw不能显示正确的百分比高度in dw的解决
    atitit.常用编程语言的性能比较 c c++ java
    atitit.二维码生成总结java zxing
  • 原文地址:https://www.cnblogs.com/Li-zhipengBlog/p/5424514.html
Copyright © 2020-2023  润新知