Csharp+Asp.net系列教程(四)

迈克老猫
来自:老猫的理想

本教程参考C#和ASP.NET程序设计教程撰写,有什么不足之处请大家指出,或在老猫的理想BLOG留言。

这次简述一下操作符
     1.算术操作符
             算术操作符包括加(+)、减(-)、乘(*)、除(/)和求余(%)。加减操作符除了用于整数和实数的加减运算外,还适用于枚举类型、字符串类型和委托类型,这是通过操作符重栽实现的。
             string mf1="Mike";
            string mf2="Cat";
            string mf3=mf1+mf2;//mf3="MikeCat"
        
            using System;
            enum Weekday
            {
                Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
            };
            class MikeCat
            {
                static void Main()
                {
                    Weekday mf1=Weekday.Sunday;
                    Weekday mf2=mf1+3;
                    Console.WriteLine("mf1={0},mf2={1}",mf1,mf2);
                }
            }//结果:mf1=Sunday,mf2=Wednesday
        2.赋值操作符
            赋值就是给一个变量赋一个新值。c#中分简单赋值和复合赋值两类。
                简单赋值:"=" a=b=c 等价于 a=(b=c)
                复合赋值:"+=" "-=" "*=" "/=" "%=" "|=" "^=" "<<=" ">>=" a+=10 等价于a=a+10
        3.比较操作符
            比较操作符用来比较两个表达式的大小,如大于(>) < == != <= >= 。
        4.逻辑操作符
            逻辑与(&&) 逻辑或(||) 和 逻辑非(!)
        5.位操作符是对数据按二进制位进行运算的操作符。c#位操作符包括按位与(&) | ~ << >>
                using System;
                class MikeCat
                {
                    public static void Main()
                    {
                        int a=6&3;
                        Console.WriteLine("a={0}",a);
                        //6的二进制是00000110,3的二进制是00000011,按位与后等于00000010,即2
                        int b=6|3;
                        Console.WriteLine("b={0}",b);
                        //6的二进制是00000110,3的二进制是00000011,按位或后等于00000111,即7
                        int c=~6;
                        Console.WriteLine("c={0}",c);
                        //6的二进制是00000110,按位取反后是11111001即-7
                        int d=6^3;
                        Console.WriteLine("d={0}",d);
                        //6的二进制是00000110,3的二进制是00000011,按位异或后等于00000101,即5
                        int e=6<<3;
                        Console.WriteLine("e={0}",e);
                        //6的二进制是00000110,左移三位后等于00101000,即48
                        int f=6>>2;
                        Console.WriteLine("f={0}",f);
                        //6的二进制是00000110,右移二位等于00000001,即1
                    }
                }
        6.is操作符
            is操作符用于检查运行时对象类型是否和给定的类型兼容。表达式"e is T"中的e是一个表达式,T是一个类型。返回值是一个布尔值。
            如果满足下列两个条件,则 is 表达式计算为 true 值:
                expression 非 null。
                expression 可以被转换为 type。也就是说,将完成形式 (type)(expression) 的转换表达式而不引发异常。
            示例
                // cs_keyword_is.cs
                // The is operator
                using System;
                class Class1
                {
                }
                class Class2
                {
                }
                public class IsTest
                {
                 public static void Test (object o)
                 {
                 Class1 a;
                 Class2 b;
                 if (o is Class1)
                 {
                 Console.WriteLine ("o is Class1");
                 a = (Class1)o;
                 // do something with a
                 }        
                 else if (o is Class2)
                 {
                 Console.WriteLine ("o is Class2");
                 b = (Class2)o;
                 // do something with b
                 }
                 else
                 {
                 Console.WriteLine ("o is neither Class1 nor Class2.");
                 }
                 }
                 public static void Main()
                 {
                 Class1 c1 = new Class1();
                 Class2 c2 = new Class2();
                 Test (c1);
                 Test (c2);
                 Test ("a string");
                 }
                }
                输出
                o is Class1
                o is Class2
                o is neither Class1 nor Class2.
        7.三元操作符
            三元操作符(?:)也称条件操作符。对条件表达式"b?x:y",总是先计算条件b,然后进行判断。如果b的值为true,则计算x的值,否则计算y的值。条件运算符为右联运算符,因此该形式的表达式 a ? b : c ? d : e 按如下规则计算:a ? b : (c ? d : e)
        8. . 运算符
            点运算符用于成员访问。name1 . name2
                    class Simple
                    {
                     public int a;
                     public void b()
                     {
                     }
                    }
                    Simple s = new Simple();
                    变量 s 有两个成员 a 和 b;若要访问这两个成员,请使用点运算符
                    s.a = 6; // assign to field a;
                    s.b(); // invoke member function b;

9.[] 运算符
            方括号 ([]) 用于数组、索引器和属性,也可用于指针。
            type [] array [ indexexpr ]
            其中: type 类型。 array 数组。 indexexpr 索引表达式
        10.() 运算符
            除了用于指定表达式中运算符的顺序外,圆括号还用于指定转换(类型转换)
            ( type ) expr    其中:type     expr 要转换为的类型名。 expr     一个表达式。转换显式调用从 expr 类型到 type 类型的转换运算符;如果未定义这样的转换运算符,则该转换将失败。
        12.自增自减操作符
            自增操作符++对变量的值加1,而自减操作符--对变量的值减1。此操作符有前后缀之分。对于前缀操作符,遵循的原则是“先增减,后使用”,而后缀操作符则正好相反,是“先使用,后增减”
            using System;
            class MikeCat
            {
                public static void Main()
                {
                    double x,y;
                    x=1.5;
                    Console.WriteLine(++x);//自增后等于2.5
                    y=1.5;
                    Console.WriteLine(y++);//先显示1.5后自增
                    Console.WriteLine(y);//自增后等于2.5
                }
            }
        13.as 运算符
            as 运算符用于执行可兼容类型之间的转换。as 运算符用在以下形式的表达式中:expression as type    其中: expression     引用类型的表达式。type    引用类型。
            as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将产生空,而不是引发异常。在形式上,这种形式的表达式:
            expression as type    等效于:
            expression is type ? (type)expression : (type)null
            只是 expression 只被计算一次。
            请注意,as 运算符只执行引用转换和装箱转换。as 运算符无法执行其他转换,如用户定义的转换,这类转换应使用 cast 表达式来代替其执行。
            using System;
            class MyClass1
            {
            }
            class MyClass2
            {
            }
            public class IsTest
            {
             public static void Main()
             {
             object [] myObjects = new object[6];
             myObjects[0] = new MyClass1();
             myObjects[1] = new MyClass2();
             myObjects[2] = "hello";
             myObjects[3] = 123;
             myObjects[4] = 123.4;
             myObjects[5] = null;
             for (int i=0; i             {
             string s = myObjects[i] as string;
             Console.Write ("{0}:", i);
             if (s != null)
             Console.WriteLine ( "'" + s + "'" );
             else
             Console.WriteLine ( "not a string" );
             }
             }
            }
            输出
            0:not a string
            1:not a string
            2:'hello'
            3:not a string
            4:not a string
            5:not a string
        14.new 操作符
                new操作符用于创建一个新的类型实例,有三种形式:
                A:对象创建表达式,用于创建一个类类型或值类型的实例。
                B:数组创建表达式,用于创建一个数组类型实例。
                C:委托创建表达式,用于创建一个新的委托类型实例。
        15.typeof操作符
                typeof操作符用于获得系统原型对象的类型。
                using System;
                class MikeCat
                {
                    public static void Main()
                    {
                        Console.WriteLine(typeof(int));
                        Console.WriteLine(typeof(System.Int32));
                    }
                }//结果:System.Int32 System.Int32
                //表明int和System.Int32是同一个类型
            c#中用GetType()方法获得一个表达式在运行时的类型
                    using System;
                    class MikeCat
                    {
                        public static void Main()
                        {
                            int r=3;
                            Console.WriteLine("圆的面积等于{0}",r*r*Math.PI);
                            Console.WriteLine("类型是{0}",(r*r*Math.PI).GetType());
                        }
                    }//圆的面积等于28.2743338823081
                    //类型是System.Double
        16.sizeof操作符
                sizeof操作符获得一个值类型的字节大小
                        using System;
                        class MikeCat
                        {
                            unsafe public static void SizesOf()
                            {
                                Console.WriteLine("short的大小是{0}",sizeof(short));
                                Console.WriteLine("int的大小是{0}",sizeof(int));
                                Console.WriteLine("long的大小是{0}",sizeof(long));
                            }
                            public static void Main()
                            {
                                SizesOf();
                            }
                        }//short 的大小是2;int的大小是4;long的大小是8;
        17.checked和unchecked操作符
            在进行整型算术运算或从一种整型显示转换到另外一种整型时,有可能产生溢出。
            检查这种溢出c#中有两种处理方式:
            第一:在编译时设置溢出校验选项(溢出校验默认是禁用的):
                csc /checked test.cs //这个我们在前面有所介绍
            第二:使用checked和unchecked操作符来确定是否进行溢出校验。即使编译时禁用溢出校验,计算时也同样引发异常。
                using System;
                class MikeCat
                {
                    public static void Main(string[] args)
                    {
                        long factorial=1;
                        long num=Int64.Parse(args[0]);
                        for(long cur=1;cur<=num;cur++)
                            {
                                checked{factorial*=cur;}
                            }
                            Console.WriteLine("{0}的阶乘是{1}",num,factorial);
                    }
                }//test.exe 3 3的阶乘是6
        unchecked操作符与checked操作符正好相反,即使溢出,被unchecked操作符所括住的代码也不会引发异常。
        各个操作符的优先级我就不在这里多说了。主要是手累。呵呵。仍然和以前c++的优先级相似。详细可参看MSDN。感谢大家关注本教程,欢迎访问老猫的理想BLOG

转载于:https://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277350.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 脚本 写更新,用Shell写的游戏客户端更新脚本

#!/bin/sh########################################### 客户端版本更新系统########################################### CLIENT_INIT_VERSION 客户端新版本&#xff0c;默认是0# CLIENT_OLD_VERSION 客户端旧版本(存放在VERSION_FILE指定的文件中)&#xff0c;当没有时取CL…

Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载、安装和环境变量配置 http://yanmin99.com/ android-0基础从入门到精通 环境变量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TO…

报表引擎 - 数据模型

介绍 本文档是报表模型的数据模型部分&#xff0c;说明平台报表中涉及的报表数据相关 术语 名称 说明 数据源 数据源是与数据存储的连接。支持数据源适配 数据集 定义报表数据来源的一个二维表 参数 报表往往有参数&#xff0c;例如&#xff0c;日报表&#xff0c;当…

linux 删旧内核,Ubuntu 删除旧内核的方法

使用Ubuntu时如果系统里安装了很多内核&#xff0c;会造成多于的启动列表。想删掉一些不用的内核方法如下方法一&#xff1a;首先就是使用如下命令&#xff0c;列出所有安装的内核&#xff0c;下表中&#xff0c;带有p_w_picpath的就是内核文件。从中选择要卸载的包&#xff0c…

L2-014 列车调度(队列模拟:set)

题意&#xff1a; 两端分别是一条入口&#xff08;Entrance&#xff09;轨道和一条出口&#xff08;Exit&#xff09;轨道&#xff0c;它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入&#xff0c;最后从出口离开。在图中有9趟列车&#xff0c;在入口处按照{…

新架设了一个CVS服务器 --by yp

cvs是个代码管理的好东东&#xff0c;全称并发版本控制。不知道的上网查一下资料。 我下载了相关的部分资料和软件&#xff0c;包括架设服务器的软件和使用服务的客户端软件&#xff0c;都是windows平台下可用的&#xff0c; 其他平台下的我都没下载&#xff0c;因为不会用。在…

@hdu - 6372@ sacul

目录 descriptionsolutionaccepted codedetailsdescription 定义矩阵 \(A_i\) 是一个大小为 \(p^i*p^i\) 的矩阵&#xff0c;其中 \(p\) 是第 \(c\) 个素数&#xff08;c 给定&#xff09;&#xff0c;且 \(A_i[x][y] [C(x, y) \mod p > 0]\)&#xff08;其中 C(x, y) 是组…

实验室里人越来越少啊!

研二下半学期了。研三的师哥师姐们都忙着找工作&#xff0c;有的已经去工作了。只是偶而来实验室转转。研一的师弟师妹&#xff0c;现在还都有课&#xff0c;实验室也没他们的机器&#xff0c;所以几乎不来实验室。我们研二的有四个人&#xff0c;两个北京的。其中一个在外面打…

在一台机器上搭建多个redis实例

默认Redis程序安装在/usr/local/redis目录下&#xff1b; 配置文件&#xff1a;/usr/local/redis/redis.conf&#xff0c;该配置文件中配置的端口为默认端口&#xff1a;6379&#xff1b; Redis的启动命令路径&#xff1a;/usr/local/bin/redis-server。 可以指定端口启动多个R…

2年前 影子

1. 请问您知道 xxxx吗 ? 麻烦了您? 2. 您在公司待了多长时间了&#xff1f; 3. 您觉得公司怎么样&#xff1f; 。。。。。。 待续&#xff01; 转载于:https://www.cnblogs.com/nucdy/p/11151470.html

linux是只读添加 来覆盖,Linux之指令 重定向 文件覆盖和文件追加

CXF支持 SOAP1&period;1 SOAP1&period;2协议SOAP协议分为两个版本 1.1 1.2 默认支持1.1 实现方式: 1.编写接口 import javax.jws.WebService; WebService public inte ...USACO Section 2&period;4&colon; Bessie Come Home因为题目给了边的信息,所以比较…

分层架构web容器的配置安全

转自&#xff1a;http://hi.baidu.com/shineo__o/item/7520d54c24d234c71081da82 /ps:本以为这是一个偶然配置失误造成的问题&#xff0c;但最近几天无聊时测试发现&#xff0c;有此类似问题的站点就有上百个&#xff0c;所以在这里粗糙总结一下&#xff01; 通常我们会碰到这样…

Jenkins-Gitlab配置方法

1&#xff09;本机首先安装好git软件2&#xff09;然后安装gitlab插件,在可选插件中查找gitlab,点击直接安装3&#xff09;然后进入系统管理-系统设置 首先进入Gitlab中复制需要的 token 值在 Profile Settings - Account把复制的值&#xff0c;复制到新增页面中转载于:https:…

高速缓冲存储器的功能、结构与工作原理

2.3 高速缓冲存储器&#xff08;Cache&#xff09; 2.3.1 高速缓冲存储器的功能、结构与工作原理   高速缓冲存储器是存在于主存与CPU之间的一级存储器&#xff0c; 由静态存储芯片(SRAM)组成&#xff0c;容量比较小但速度比主存高得多&#xff0c; 接近于CPU的速度。 Cache…

洛谷 P1417 烹调方案 (01背包拓展)

一看到这道题就是01背包 但是我注意到价值和当前的时间有关。 没有想太多&#xff0c;直接写&#xff0c;0分 然后发现输入方式不对…… 改了之后只有25分 我知道wa是因为时间会影响价值&#xff0c;但不知道怎么做。 后来看了题解&#xff0c;发现我对01背包理解不够透彻普通0…

LeetCode 77.组合求和

给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明&#xff1a; 所有数字&#xff08;包括 target&#xff09;都是正整数。解集不能包含重复的组合…

18函数对象19command模式20函数对象在STL中的应用

Item 18. Function ObjectsItem 19. Commands and HollywoodItem 20. STL Function Objects1、unction Objects是什么函数对象听起来挺吓人&#xff0c;其实并不神秘&#xff0c;它也是一个类的对象&#xff0c;只不过该类重载了操作符(),使得对象使用以来跟函数一样。class Fi…

linux df命令功能,Linux df命令简要介绍

日常工作生活中&#xff0c;我们常需要查看系统当前的磁盘空间使用情况。在windows下&#xff0c;只需简单点击我的电脑&#xff0c;就看到带进度条的系统磁盘使用情况&#xff0c;非常直观。那linux命令行下如何实现同样的功能呢&#xff1f;这就是我们今天要介绍的df命令。df…

spring集成RabbitMQ配置文件详解(生产者和消费者)

1&#xff0c;首先引入配置文件org.springframework.amqp&#xff0c;如下&#xff1a; <dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.7.1.RELEASE</version></de…

一天的学习成果:hash输出,dcache工作原理,include的home directory,fist optype的含义...

最先获得突破的是解决了下午的崩溃问题。其实原因很简单&#xff0c;我声明了一个unsigned int型指针&#xff0c;但是没有给它分配空间…… 解决了这个问题之后就很简单了&#xff0c;调用定义在linux/dcache.c文件中的full_name_hash函数对文件名进行hash计算。这里发现了一个…