刘铁猛C#教程笔记——操作符

news2024/11/23 2:27:55

C#语言中的操作符

 表中位于同一行的操作符优先级相同,从上到下优先级依次减弱;

操作符的用法举例

  1. 成员访问运算符——“.”:用于访问类中的成员或者访问位于某个名空间中的类,如:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                Example e;
                e = new Example();
                double result = e.GetCone(3D, 4D);         //访问类中的函数成员
                Console.WriteLine(result);
    
                //引用命名空间中的某个类
    
                System.Windows.Forms.Form f = new System.Windows.Forms.Form();    //创建窗体类对象
                f.ShowDialog();            //用于显示窗体
    
            }
            
        }
        class Example
        {
            public double GetCircleArea(double r)
            {
                return Math.PI * r * r;
            }
    
            public double GetCylinder(double r,double h)
            {
                return GetCircleArea(r) * h;
            }
    
            public double GetCone(double r,double h)
            {
                return GetCylinder(r, h) / 3;
            }
        }   
    }
    

    System.Windows.Forms.Form f = new System.Windows.Forms.Form();意思是引用位于System这个命名空间中的Windows命名空间下的Forms命名空间中的Form类;命名空间是可以嵌套的。

  2. new操作符:new有两种用法,一种是作为操作符,用于创建内存实例,另外一种是作为关键字用在类成员前面表示子类成员覆盖父类成员,例如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                Example e=new Example();
                SubExample se =new SubExample();
    
                e.PrintHello();
                se.PrintHello();
            }
            
        }
        class Example
        {
            public void PrintHello()
            {
                Console.WriteLine("Example Say Hello");
            }
            
    
            public double GetCircleArea(double r)
            {
                return Math.PI * r * r;
            }
    
            public double GetCylinder(double r,double h)
            {
                return GetCircleArea(r) * h;
            }
    
            public double GetCone(double r,double h)
            {
                return GetCylinder(r, h) / 3;
            }
        }  
        class SubExample:Example
        {
            new public void PrintHello()
            {
                Console.WriteLine("SubExample Say Hello");
            }
    
        }
    }
    

    运行结果:

    var关键字和new操作符连用,创建匿名对象,var可以根据变量实例自动推断变量的类型,如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                var n = new { name = "myname", age = 19 };
                Console.WriteLine(n.GetType().Name);
            }
            
        }
       
    }
    

  3. typeof操作符:可以用于获取一个类型的完整信息,包括完整的类型名称,该类型包含在哪个命名空间中,该类型包含哪些成员等等,例如:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                Type t = typeof(int);
                Console.WriteLine(t.Name);           //可以获取该类型的所有信息,包括该类型的全称,位于哪一个命名空间,有哪些方法,有哪些成员等等
    
                //获取该类型所拥有的成员方法
                foreach (var m in t.GetMethods())
                {
                    Console.WriteLine(m.Name);
                }
            }
            
        }
       
    }
    

     

  4. default:该运算符用于获取一个类型的默认值,比如:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(default(double));
            }
            
        }
       
    }
    

     

  5. checked/unchecked:checked检查程序是否存在溢出,unchecked不检查溢出,例如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
                int a = int.MaxValue;
                Console.WriteLine(a);
    
                checked
                {
    
                    int b = a + 1;
                    Console.WriteLine(b);
    
                    int c = a + 1;
                    Console.WriteLine(c);
                }
            }
            
        }
       
    }
    
     运行结果:

  6.  (T)x,类型转换操作符:用于进行强制类型转换,该操作符只适用于两种差别不是很大的类型之间的转换,如几种数值类型之间的转换,long转换为int等,但是若是将字符串转换成数值类型的话就不可以使用该操作符进行转换,类型转换的内容比较多,放在文章最后了
  7. is:该操作符用于判断某一个对象是否属于某一个类,所以判断的要求判断的变量是一个类类型的变量;
  8. as:该操作符的作用是用于判断某一个变量是否属于某一个类,如果是的话返回该变量的首地址否则返回null,例如:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                string a = "is_string";
                var b = a as string;
                Console.WriteLine(b);
                  
            }
            
        }
       
    }
    

  9. ??:该操作符用于判断一个值是否为空值,如果是空值则为其重新赋予一个值,例如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Nullable<int> a = null;      //等价于int?a=null;
                int? c = null;
                var b = a ?? 2;
                Console.WriteLine(b);
                var d = c ?? 3;
                Console.WriteLine(d);
                
                  
            }
            
        }
       
    }
    

     

  10. ?:条件操作符,实现简单的if..else分支的功能,如:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    
    namespace course
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Nullable<int> a = null;      //等价于int?a=null;
                int? c = null;
                var b = a ?? 2;
                Console.WriteLine(b);
                var d = c ?? 3;
                Console.WriteLine(d);
    
                int e = b > d ? 1 : 0;
                Console.WriteLine(e);
                
                  
            }
            
        }
       
    }
    

     

C#的类型转换

 使用convert进行强制类型转换示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace course
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "123.12";
            double a = Convert.ToDouble(str1);
            Console.WriteLine(a);


            double b = 13.14;
            string str2 = b.ToString();
            Console.WriteLine(str2);
        }
        
    }
   
}

将数值类型转换成字符串类型时,可以直接使用数值类型所具有的ToString方法,也可以借助Convert类;

使用目标数据类型所具有的Parse方法进行转换,注意该方法只能用于将格式正确的数值类型的字符串转换成目标数值类型,使用示例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace course
{
    class Program
    {
        static void Main(string[] args)
        {
            double a = double.Parse("3.14");
            Console.WriteLine(a);   
        }
        
    }
   
}

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

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

相关文章

Unity进阶--fsm状态机的使用笔记

文章目录 Unity进阶--fsm状态机的使用笔记第一种用基础的if播放实现动画控制switch--case实现状态机使用状态机 Unity进阶–fsm状态机的使用笔记 第一种用基础的if播放实现动画控制 朴实无华&#xff0c;简单易懂&#xff0c;但是耦合性太差。 switch–case实现状态机 写对应…

【JAVA】云HIS系统功能菜单知识(二)

随着医疗信息化和互联网技术的不断发展&#xff0c;云HIS在大数据管理和应用的优势日益凸显。对于医疗机构而言&#xff0c;云HIS平台可以帮助其实现更高效的医疗服务管理&#xff0c;并提高医疗服务的整体水平和效率。 一、系统管理 1.医院信息 基本信息、法人代表、主要负责…

IntelliJ IDEA2023中利用maven-archetype-quickstart模板创建项目无src文件夹及maven插件下载过慢问题的解决

目录 介绍问题之解决问题2的解决问题1的解决 介绍 昨天下载并安装了IntelliJ IDEA 2023的最新版&#xff08;以下简称为IDEA 2023&#xff09;&#xff0c;学习利用该IDE编写Java项目及将其与maven结合构建项目。我所安装的maven是去年暑假安装的&#xff0c;版本为Apache Mav…

【架构基础】架构概念

软件架构产生的背景 1972年图灵奖获得者、荷兰计算机科学家Edsger Wybe Dijkstra早在20世纪60年代就开始涉及软件架构概念了。 20世纪60年代第一次软件危机引出了结构化编程&#xff0c;创造了模块的概念。 20世纪80年代第二次软件危机引出了面向对象编程&#xff0c;创造了…

Flask的send file和send_from_directory的区别

可以自行查看flask 文档。 send file高效&#xff1b; send from directory安全&#xff0c;且适用于静态资源交互。 都是实现相同的功能的。 send_file send_from_directory

所有docker命令无效,解决办法

目录 ■前言 今天使用docker时&#xff0c;所有命令无效 ■解决办法如下 1.停止docker服务 2.查看状态 3.删除之前的docker相关的文件 4.再次查看状态 5.使用相关命令 &#xff08;好用了&#xff09; 6.重新下载镜像 ■前言 今天使用docker时&#xff0c;所有命令无…

MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1:MySQL Enterprise Backup概要

文章目录 MySQL 8.0 OCP (1Z0-908) 考点精析-备份与恢复考点1&#xff1a;MySQL Enterprise Backup概要MySQL Enterprise Backup下载与安装MySQL Enterprise Backup的备份过程MySQL Enterprise Backup的优势mysqlbackup 客户端例题例题1 &#xff1a; MySQL Enterprise Backup概…

idea的插件FastRequest,比postman更好用

1.安装插件Restful Fast Request 在插件plugin中直接搜索Restful Fast Request,然后点击install安装 2.使用插件 插件位置在右面&#xff0c;点开后呈现以下页面 配置项目名和环境 选择配置好的项目名和环境 启动项目后可以看到接口的小火箭&#xff0c;点击小火箭 3.…

【配置环境】Windows下 VS Code 远程连接虚拟机Ubuntu

一&#xff0c;环境 Windows 11 家庭中文版VMware Workstation 16 Pro &#xff08;版本&#xff1a;16.1.2 build-17966106&#xff09;ubuntu-22.04.2-desktop-amd64 二&#xff0c;关键步骤 Windows下安装OpenSSHVS Code安装Remote - SSH插件 三&#xff0c;详细步骤 在Ubun…

sentinel深入讲解流量控制/熔断降级

文章目录 sentinelsentinel介绍重要的核心概念引入依赖限流的规则熔断规则yaml 项目配置使用注解 SentinelResource讲解类的静态方法 sentinel sentinel介绍 随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构…

STM32中PWM概述

STM32F103C8T6 PWM资源&#xff1a; 高级定时器(TIM1):7路 通用定时器(TIM2~TIM4):各4路 PWM输出模式&#xff1a; *PWM模式1&#xff1a;在向上计数时&#xff0c;一旦CNT<CCRx时输出为有效电平&#xff0c;否则为无效电平 *PWM模式2&#xff1a;在向上计数时&#xf…

vue实现仿手写稿样式,可导出成png图片

文章目录 环境实现效果代码 环境 安装html2canvas&#xff0c;用于将指定标签下的全部子节点转换为图片 npm install html2canvas实现 <template><div class"handwrite"><div id"left" class"left"><div id"backImg…

【Mycat2】关于序列功能的一个 Bug

创建序列前 Mycat 的 sequences/ 目录情况&#xff1a; 创建一个 MySQL 生成方式的序列。 /* mycat:setSequence{"name":"sharding_db_not_tb111","clazz":"io.mycat.plug.sequence.SequenceMySQLGenerator"} */;因为没有官方文档支…

字符函数和字符串函数下篇(详解)

❤️ 作者简介 &#xff1a;RO-BERRY 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识&#xff0c;对纯音乐有独特的喜爱 &#x1f4d7; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;如果你也感兴趣的话欢迎关注博主&#xff0c;期待更新 字符函数和字符串函数2 1…

DevOps自动化平台开发之 Shell脚本执行的封装

基础知识 基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue 1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成…

【Datawhale夏令营】任务一学习笔记

目录 一&#xff1a;anaconda的环境配置 二&#xff1a;赛题任务解读 2.1 任务要求 2.2 数据集介绍 2.3 评估指标 三&#xff1a;机器学习之 LightGBM 一&#xff1a;anaconda的环境配置 下载Anaconda&#xff1a;访问Anaconda官方网站&#xff08;https://www.anaconda.…

SQL篇-04_SQL进阶挑战-01_增删改操作

插入记录 SQL110 插入记录&#xff08;一&#xff09; 描述 牛客后台会记录每个用户的试卷作答记录到exam_record表&#xff0c;现在有两个用户的作答记录详情如下&#xff1a;用户1001在2021年9月1日晚上10点11分12秒开始作答试卷9001&#xff0c;并在50分钟后提交&#xff…

【算法基础:数学知识】4.3 欧拉函数

文章目录 欧拉函数定义性质 例题列表873. 欧拉函数&#xff08;使用质因数分解求一个数的欧拉函数&#xff09;原理讲解&#xff08;公式推导&#xff09;⭐解法代码 874. 筛法求欧拉函数&#xff08;求 1 ~ n 中所有数字的欧拉函数&#xff09;⭐ 欧拉函数 https://oi-wiki.o…

安装及配置zabbix_agent代理端(监控FTP服务器)

监控agent的linux主机我们在之前的文章里已经做好了 现在直接安装ftp服务即可 [rootagent ~]# yum install -y vsftpd[rootagent ~]# systemctl start vsftpd #启动ftp服务[rootagent ~]# systemctl enable vsftpd #设置ftp服务开机自启 Created symlink fro…

codec2play流程总结

Codec2.0(C2)是android系统为vendor提供的用于实现video/audio/filter模块的的HAL层接口API&#xff0c;vendor可用这个API实现他们自己的HAL层&#xff0c;Codec2.0是用于替换现有的OMX-IL。 数据流程 C2LinearBlock创建share ptr类型block&#xff0c;fetchLinearBlock对blo…