C#笔记整理(二)

By | 03月09日
Advertisement
string myGirlFriend = null;
if (myGirlFriend == null)
{
    Console.WriteLine("Please New");
}
else
{
    Console.WriteLine("Please Aerate");
}
Console.ReadKey();

布尔类型

运算符 类别 描述
== 二元 等于
!= 二元 不等于
< 二元 小于
> 二元 大于
<= 二元 小于等于
>= 二元 大于等于
一元 逻辑非
& 一元 逻辑与
| 一元 逻辑或
^ 一元 逻辑异或
&& 一元 逻辑与
|| 一元 逻辑或

备注:

bool a = true;
bool b = false;
if (a|b)
{
    Console.WriteLine("a|b");
}
if (a||b)
{
    Console.WriteLine("a||b");
}

其中两个if语句的效果是一样的,但是”|”运算符需要对a,b同时去判断,而”||”运算符判断第一个a为true就不需要去判断b的值.同理”&”和”&&”是一样的道理,在代码量大的程序中,使用”||”和”&&”是可以提升性能的.

按位运算符

&:按位与\
|:按位或\
^:按位异或\
~:按位取反\
大多数代码都不用,但是应该知道它的存在,主要用于高度优化代码

三元运算符?:

bool a = true;
int i = a ? 1 : 2;
Console.WriteLine(i);//此时i为1

判断条件?表达式1:表达式2
若判断条件为真,则执行表达式1
若判断条件为假,则执行表达式2

goto语句

尽量少用。\
当你的逻辑非常清晰时,它可以控制什么时候执行哪些代码的一种简单方式。(汇编语言会经常接触)

if语句

int i = 10;
if (i == 1)
{
    Console.WriteLine(i);
}
else if (i == 2)
{
    Console.WriteLine(i);
}
else
{
    Console.WriteLine(i);
}
//此时输出10
if(条件1)
{
    代码1
}
else if(条件2)
{
    代码2
}
……
else
{
    代码n
}

编译器首先对判断条件1,为真,执行代码1;为假,判断条件2,条件2为真,执行代码2,为假,判断……若以上条件都为假,则执行代码n。else在if语句中可以不写。

switch语句

int i = 10;
switch (i)
{
    case 1:
        Console.WriteLine(1);
        break;
    case 2:
        Console.WriteLine(2);
        break;
    case 'a':
        Console.WriteLine('a');
        break;
    default:
        Console.WriteLine("不符合列举条件");
        break;
}

还可以这样:

int i = 2;
switch (i)
{
    case 1:
    case 2:
        Console.WriteLine("1 or 2");
        break;
    case 'a':
        Console.WriteLine('a');
        break;
    default:
        Console.WriteLine("不符合列举条件");
        break;
}

if和switch在使用时注意事项

普遍认为switch的性能是高于if的,但是有时候为了代码的阅读方便以及对于判断逻辑的辨别,if的使用频率是比较高的。
例:

bool a=true,b=true,c=false;
if(a&&b&&c)
{
    Console.WriteLine("a=true,b=true,c=true");
}
else if(!a&&b&&c)
{
    Console.WriteLine("a=false,b=true,c=true");
}
else if(a&&b&&!c)
{
    Console.WriteLine("a=true,b=true,c=false");
}
...
else
{
    Console.WriteLine("a=false,b=false,c=false");
}

上述代码对a,b,c三个bool变量进行了判断,用if可以直观明了的对其进行排版,代码阅读性高,虽然使用switch也可以实现但是阅读性低。
但是

int i=1;
switch (i)
{
    case 1:
        Console.WriteLine("1");
        break;
    case 2:
        Console.WriteLine("2");
        break;
    case 'a':
        Console.WriteLine("3");
        break;
    default:
        Console.WriteLine("无");
        break;
}
//换成if
if(i == 1)
{
    Console.WriteLine("1");
}
else if(i == 2)
{
    Console.WriteLine("2");

}
else if(i == 3)
{
    Console.WriteLine("3");
}
else
{
    Console.WriteLine("无");
}

类似这种情况应该使用switch
switch的查找类似二叉树,if的则是线性
具体使用哪一种方式应该在你的项目中决定


欢迎关注我的微信个人订阅号
C#笔记整理(二)

我的微博:well火柴
每天多学一点0.0

Similar Posts:

  • Python学习笔记整理(二)python的数字

    一.Python的数字类型 1.数字常量 python数字类型在程序中如何显示(换句话说,作为常量) 数字 常量 1234,-23,0 一般整数 99999999999L 长整型数(无限大小) 1.23,3,14e-10,4E210 浮点数 0177,0x9ff,0xFF 整数的八进制和十六进制数常量 3+4j,2.0+3.0,3J 复数常量 一般来说,python的数字类型是直接的.有些编程的概念强调如下 整数和浮点数常量: 整数以十进制数字的字符串写法出现.浮点数带一个小数点,也可以加上一个

  • JS笔记整理(二)

    1.!!express 即可把express变成bollean型的. 2. 可变参数 function wei(){ for(var i in arguments){ alert(arguments[i]); } } wei("a","b","c"); #以上代码是把web()函数中传入的参数全部打印出来,注意其中的arguments参数对象. 3.try{}catch(e){}finally{} #注意finally{}是无论如何程序最终会执行

  • Deep Learning(深度学习)学习笔记整理系列(二)

    Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除.

  • C#程序员整理的Unity 3D笔记(二十):2D Toolkit之官方教程《Whack a Mole》

    在上篇博客中,简单整理了一下Unity Native 2D功能:<C#程序员整理的Unity 3D笔记(十九):Unity 3D的Native 2D>. 本文开始学习2D商用比较广泛的2D Toolkit插件. 2D Toolkit插件在2D中的地位,犹如UI中NGUI对Unity GUI一样:虽然官方原生的2D还不错,但这是最近1年新版本才有的功能,2年前Unity 2D的王道还是得用插件的,故<2D Toolkit>就成了目前商业不错的选择. 在上周刚开始看的时候,就给自己提了

  • 百度地图之二百度地图覆盖物(老罗视频笔记整理)

    接上篇 百度地图之一百度地图搭建开发环境(老罗视频笔记整理) 显示交通地图 //显示交通地图 mapView.setTraffic(true); 显示卫星地图 //显示卫星地图 mapView.setSatellite(true); 如何给地图覆盖物概述: 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图象元素(包括:折线和多变形和圆).定位图标等覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,他们会相应的移动. 地图API提供了如下几种覆盖物: Overlay:覆盖物的抽象基类

  • java笔记整理

    Java 笔记整理 包含内容 Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, Ejb, java和模式 Linux/Unix笔记 inode :存储编号(地址) ls -k:查看磁盘分区 ls -li:显示当前文件的inode号. 目录的大小跟文件的大小有关,跟目录里的文件(目录)数量无关. 一行多个命令的话,中间用分号分开.如:pwd;cal;date last | grep pts

  • JDBC 学习笔记(二)—— 大数据+存储过程

    本文查阅方法: 1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题 2.快捷"查找" -- 在当前浏览器页面,按键 "Ctrl+F" 按键组合,开启浏览器的查找功能, 在查找搜索框中 输入需要查阅的 目录标题,便可以直接到达 标题内容 的位置. 3.学习小结 -- 文中的学习小结内容,是笔者在学习之后总结出的,开发时可直接参考其进行应用开发的内容, 进一步加快了本文的查阅 速度.(水平有限,仅供参考.) 本文目录 学习小结 1.使用JDBC处理大数据 2.使用

  • (转)Deep Learning(深度学习)学习笔记整理系列(1)

    Deep Learning(深度学习)学习笔记整理系列 [email protected] http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04-08 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的.具体引用的资料请看参考文献.具体的版本声明也参考原文献. 2)本文仅供学术交流,非商用.所以每一部分具体的参考资料并没有详细对应.如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除.

  • 关于ARP欺骗与MITM(中间人攻击)的一些笔记( 二 )

    一直没有折腾啥东西,直到最近kali Linux发布,才回想起应该更新博客了-.. 再次说明,这些技术并不是本人原创的,而是以前记录在Evernote的旧内容(排版不是很好,请谅解),本文是继关于ARP欺骗与MITM(中间人攻击)的一些笔记(一)的继续,目前在Kali Linux下重新整理并放上博客,在这篇笔记中将会有以下内容: 1.ettercap插件使用(局域网内DNS欺骗举例) 2.ettercap过滤脚本简单使用(替换网页图片&下载内容.插入脚本) 3.使用ssltrip突破ssl加密截

  • java模式之抽象工厂模式学习笔记整理

    java模式之抽象工厂模式学习笔记整理 ***每一个模式都是针对一个问题的解决方案 ***系统需要的是产品的实例 工厂则是对产品创建过程的封装 (1)抽象工厂的结构:五个角色:抽象工厂 ,具体工厂,抽象产品,具体产品,产品使用者. **在产品的使用者中 通过调用具体工厂的工厂方法 来获得某一个产品的实例 **一个工厂等级结构 对应多个不同的产品等级结构 **一个具体工厂 提供多个工厂方法 来创建不同产品等级结构中的某一个具体产品 //抽象工厂 //一般与应用系统的商业逻辑无关 //所有的具体工厂

Tags: