C# 入门—基本语法

news2024/11/22 15:09:53

一、数据类型

C# 语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型,C# 中的数据类型可以大致分为三类:

  • 值类型(Value types);
  • 引用类型(References types);
  • 指针类型(Pointer types);

值类型

C# 中的值类型是从 System.ValueType 类中派生出来的,对于值类型的变量我们可以直接为其分配一个具体的值。当声明一个值类型的变量时,系统会自动分配一块儿内存区域用来存储这个变量的值,需要注意的是,变量所占内存的大小会根据系统的不同而有所变化。

引用类型

引用类型的变量中并不存储实际的数据值,而是存储的对数据(对象)的引用,换句话说就是,引用类型的变量中存储的是数据在内存中的位置。当多个变量都引用同一个内存地址时,如果其中一个变量改变了内存中数据的值,那么所有引用这个内存地址的变量的值都会改变。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。

1) 对象类型(Object)

对象类型是 C# 通用类型系统(Common Type System:CTS)中所有数据类型的最终基类,Object 是 System.Object 类的别名。任何类型的值都可以分配给对象类型,但是在分配值之前,需要对类型进行转换。

将值类型转换为对象类型的过程被称为“装箱”,反之将对象类型转换为值类型的过程则被称为“拆箱”。注意,只有经过装箱的数据才能进行拆箱。

2) 动态类型(Dynamic)

您可以在动态类型的变量中存储任何类型的值,这些变量的类型检查是在程序运行时进行的。动态类型的声明语法如下所示:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

动态类型与对象类型类似,但对象类型变量的类型检查是在编译时进行的,而动态类型变量的类型检查则是在程序运行时进行的。

3) 字符串类型(String)

字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 String 类来创建,String 类是 System.String 类的别名,它是从对象(Object)类型中派生的。在 C# 中有两种定义字符串类型的方式,分别是使用" "@" "

指针类型

C# 语言中的指针是一个变量,也称为定位器或指示符,其中可以存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针具有相同的功能。

二、变量

        变量可以理解为是我们程序可以操作的内存区域的名称,在 C# 中每个变量都有自己特定的类型,这个类型确定了变量所占内存的大小、布局、取值范围以及可以对该变量执行的操作。

        可以将变量当作一种通过符号(变量名)表示某个内存区域的方法,变量的值可以更改,并且可以多次重复使用。C# 中的基本变量类型可以归纳为以下几种:

C# 中变量的名称并不是可以随意定义的,需要遵循如下所示的规则:

  • 变量名中可以包含英文字母a-z, A-Z、数字0-9和下划线_
  • 变量名只能以英文字母a-z, A-Z或下划线_开头,不能以数字开头;
  • 变量名中不允许使用空格;
  • 变量名不能是任何 C# 中的保留字或关键字,例如 char、float 等。

三、常量

常量需要使用 const 关键字定义,语法格式如下所示:

const data_type constant_name = value;

其中,data_type 为常量的数据类型;constant_name 为常量名(类似于变量名);value 为常量的值。

using System;
namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            const double pi = 3.14;     // 定义一个常量
           
            double r;
            Console.WriteLine("本程序可以计算圆的面积,请输入一个数字作为圆的半径: ");
            r = Convert.ToDouble(Console.ReadLine());
           
            double areaCircle = pi * r * r;
            Console.WriteLine("半径为: {0}, 圆的面积为: {1}", r, areaCircle);
            Console.ReadKey();
        }
    }
}

四、 foreach循环

使用 foreach 可以遍历数组或者集合对象中的每一个元素,其语法格式如下:

foreach(数据类型 变量名 in 数组或集合对象){
    语句块;
}

       foreach 会在每次循环的过程中,依次从数组或集合对象中取出一个新的元素放到foreach( )里定义的变量中,直到所有元素都成功取出后退出循环。

【示例】使用 for 循环定义一个包含 1~100 以内所有数字的数组,然后使用 foreach 循环计算 1~100 以内所有数字的和:

using System;
namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            int[] arr = new int[100]; 
            for(int i = 0; i < 100; i++) 
            { 
                arr[i] = i + 1; 
            } 
            int sum = 0;            
            foreach (int j in arr) 
            { 
                sum = sum + j; 
            }
            Console.WriteLine("1~100 以内数字的和为:{0}", sum);
            Console.ReadLine();
        }
    }
}

五、break、continue、goto:跳出循环

        break 语句不仅可以用来终止 switch 语句,在循环语句中使用时还可以用来跳出循环,执行循环外的下一条语句。如果是在嵌套循环中使用,例如在内层的循环中使用 break 语句,那么程序只会跳出内层的循环,并不会影响到外层循环的执行。break 语句的执行原理如下图所示:

C# 中 continue 语句的工作原理与 break 语句类似,但是 continue 语句并不会跳出整个循环,而是跳过本次循环继续执行下一次的循环。continue 的执行原理如下图所示。

【示例】使用 for 循环输出 1~9 之间的数字,遇到 5 时跳过:

using System;
namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            for(int i = 1; i <= 9; i++){
                if(i == 5){
                    continue;
                }
                Console.Write("{0} ", i);
            }
            Console.ReadLine();
        }
    }
}

        C# 中的 goto 语句也称为跳转语句,使用它可以控制程序跳转到指定的位置执行。不过并不建议在程序中多次使用 goto 语句,因为它会使程序变得更加复杂。goto 语句的语法格式如下所示:

goto Labels;
语句块1;
Labels:
    语句块2;

        想要使用 goto 语句来跳转程序,必须先在想要跳转的位置定义好一个标签(Labels),标签名称的定义和变量名类似,然后使用goto 标签名;即可使程序跳转到指定位置执行。如上面语法中所示,程序会跳过“语句块1”直接执行“语句块2”。

提示:goto 语句并不限于在循环中使用,其它的情况也可以使用。但是,goto 语句不能从循环外跳转到循环语句中,而且不能跳出类的范围。

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

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

相关文章

Windows 电脑类别怎么区分?不同类别区分总结

电脑类别 Windows 电脑的类别有哪些&#xff1f;我们可以大致分为这三类&#xff1a;CopilotPC、AI PC、普通 PC。下面就来看看这些电脑类别的区别。 普通 PC 普通 PC 就是指那些标准的台式电脑或者笔记本电脑&#xff0c;它们是由中央处理器&#xff08;CPU&#xff09;以及…

期货日内交易口诀

1、向下差价法 前提&#xff1a;要判断准确后市是向下行情走势。被套后&#xff0c;等反弹到一定的高度&#xff0c;估计见短线高点了&#xff0c;先卖出&#xff0c;待其下跌一段后再买回。通过这样不断地高卖低买来降低成本&#xff0c;最后等总资金补回了亏损&#xff0c;完…

前端写代码真的有必要封装太好么?

前言 封装、代码复用、设计模式…… 这些都是方法&#xff0c;业务才是目的。技术始终是为业务服务的。能够满足业务需求&#xff0c;并且用起来舒服的&#xff0c;都是好方法。 不存在一套适用于所有项目的最佳代码组织方法&#xff0c;你需要结合业务&#xff0c;去不断地…

基于PHP+MySQL组合开发家政预约服务小程序源码系统 带完整的安装代码包以及搭建教程

系统概述 在当今数字化时代&#xff0c;家政服务行业也逐渐融入了科技的力量。为了满足市场需求&#xff0c;我们开发了一款基于 PHPMySQL 组合的家政预约服务小程序源码系统。该系统不仅提供了便捷的家政服务预约功能&#xff0c;还具备完整的安装代码包和详细的搭建教程&…

海南云亿商务咨询有限公司怎么样?

在数字化浪潮汹涌的当下&#xff0c;电商行业正以前所未有的速度发展&#xff0c;而抖音作为新兴的电商平台&#xff0c;凭借其独特的短视频直播形式&#xff0c;吸引了无数商家和消费者的目光。海南云亿商务咨询有限公司&#xff0c;作为抖音电商服务的佼佼者&#xff0c;凭借…

苹果相册视频怎么提取音频,一个小工具就能轻松搞定

苹果相册视频怎么提取音频&#xff1f;我们时常捕捉到那些转瞬即逝的美好瞬间&#xff0c;无论是家人欢聚的温馨画面&#xff0c;还是朋友间开怀大笑的片段&#xff0c;每一帧都承载着满满的回忆。而藏匿于这些珍贵视频背后的&#xff0c;往往还有那首触动心弦的背景音乐&#…

[leetcode]squares-of-a-sorted-array. 有序数组的平方

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> sortedSquares(vector<int>& nums) {int n nums.size();vector<int> ans(n);for (int i 0, j n - 1, pos n - 1; i < j;) {if (nums[i] * nums[i] > nums[j] *…

Java的lambda表达式使用方式,lambda表达式到底为了做什么

感觉从狭义的使用目的来说&#xff0c;lambda表达式就是为了简化某些匿名内部类&#xff0c;当然不是所有的匿名内部类都能被简写。也就是你想要某些返回值作为参数不用去显示的写调用方法或者传参&#xff0c;具体来看看下面的例子。 // Java7及以前假设想要排序List的方式&a…

吴恩达LangChain教程:Embedding与文档解析

当前有很多应用想要实现根据文档或者文本内容实现用户问答&#xff0c;或者实现多轮会话能力&#xff0c;这时候就会使用到Embedding的能力。 01 | 使用类介绍 想要依据Embedding实现文本检索&#xff0c;需要引入如下的依赖。 其中&#xff0c;RetrievalQA的作用是对一些文档…

开发、测试、产品、运营绩效考核表(Excel原件)

1、产品&运营绩效考核表 2、开发绩效考核表 3、测试绩效考核表 4、CPI指标库 软件资料清单列表部分文档&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调…

鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 module的切换

module的切换 从FA模型切换到Stage模型时&#xff0c;开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件module标签下&#xff0c;具体差异见下列表格。 表1 FA模型module标签与Stage模型module标签差异对比 FA标签标签说明对应的Stage标签差异说明…

博尔捷业绩双降:近2000万赔偿80宗案件未了,旗下公司多次沦为被执行人

《港湾商业观察》廖紫雯 日前&#xff0c;BridgeHR Tech Group Inc.&#xff08;博尔捷&#xff09;递表港交所&#xff0c;保荐机构为华泰国际。博尔捷国内运营主体为上海博尔捷数字科技集团有限公司、上海杰而博科技&#xff08;集团&#xff09;有限公司、博尔捷管理咨询&a…

自媒体入门:利用ChatGPT快速制作高点击率的文章和视频

前言 在当今信息爆炸的时代&#xff0c;自媒体已经成为许多人展示自己、分享知识以及赚取收入的重要渠道。对于刚入门的自媒体新人来说&#xff0c;内容创作往往是最大的挑战之一。然而&#xff0c;随着人工智能技术的迅猛发展&#xff0c;ChatGPT 这样的工具为我们提供了高效…

AI在落地企业应用时的“数据幻觉”缘何这么难解决一谈LORA微调与数据质量处理之争

开篇 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;越来越多的企业开始将AI落地应用于业务中。然而&#xff0c;不可忽视的是&#xff0c;企业在落地LLM RAG系统时&#xff0c;常常面临一个令人头痛的问题——数据幻觉。 就像透过雾霭的眼睛,看到了一片迷人的景…

Node.js 个人博客

关于该博客 这是一个自己搭建的简易的博客&#xff0c;用于记录一些学习笔记和技术分享。在大四毕业时完成了第一个版本&#xff0c;后续会不断完善和更新。欢迎大家提出宝贵意见和建议。 详细介绍在 blog/posts/博客/博客搭建.md 中: https://github.com/ximingx/blog/blob/m…

Java使用网易邮箱发送邮件

Java使用网易邮箱发送邮件 准备工作&#xff1a;开启 网易邮箱 STMP 模式 弄一个测试案例大家试一下吧&#xff01; public static void sendMail(String email, String emailMsg)throws AddressException, MessagingException {// 配置邮箱服务器String host "smtp.…

视频监控管理平台LntonCVS智能视频监控平台系统详细介绍

安防视频监控平台LntonCVS以其卓越的灵活性和便捷的部署特性在众多同类产品中脱颖而出。它不仅支持多种主流标准协议&#xff0c;如国标GB28181、RTSP/Onvif、RTMP等&#xff0c;还兼容了海康Ehome、海大宇等厂家的私有协议和SDK接入&#xff0c;为用户提供了更加丰富的选择。 …

[leetcode]number-of-longest-increasing-subsequence

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findNumberOfLIS(vector<int> &nums) {int n nums.size(), maxLen 0, ans 0;vector<int> dp(n), cnt(n);for (int i 0; i < n; i) {dp[i] 1;cnt[i] 1;for (int j 0; j < i…

Mozilla Firefox正在尝试集成ChatGPT等帮助用户总结或改写网页内容

Mozilla基金会开启了一项新计划&#xff1a;在接下来几个月里尝试在Firefox浏览器里集成 ChatGPT 等 AI 服务&#xff0c;帮助用户在网页上总结内容或者改写内容等。Firefox浏览器集成的 AI 服务包括但不限于 ChatGPT、Google Gemini、HuggingChat 等&#xff0c;当然这并不是把…

Python 语法基础二

7.常用内置函数 执行这个命令可以查看所有内置函数和内置对象&#xff08;两个下划线&#xff09; >>>dir(__builtins__) [__class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt…