C#基本语法

news2024/11/28 3:37:21

关键字

标识符命名规则 

  1. 标识符中只能出现英文字母、数字、下划线,以及@这几种字符,不能出现诸如"空格,!"等这些字符;
  2. 标识符名称只能以下划线,字母以及@打头,不可以用数字作为标识符名称的开头;
  3. 不可以使用C#语言用作特殊用途的关键字来作为标识符的名称,除非在关键字前面加上@,比如“if”是一个非法的标识符名称,而“@if”就是一个合法的标识符名称;
  4. 标识符名称区分大小写,且长度不能超过255个字符的长度;

C#的数据类型 

  1. 值类型:任何变量都需要存储,而变量的存储分为两种方式,引用语义,和值语义,引用语义存放的只是指向这个变量的一个指针,而并不实际存放具体的数值,采用引用语义存放的变量其在内存空间中所占据的大小都是一样的,而值语义存储的就是真正的数值,而不是指向该数值的地址,所以采用值语义所存储的变量其在内存空间中所占据的大小是不一样的,典型的如C语言的变量采用的就是值语义的存储方式,而python采用的就是引用语义的存储方式;C#从C/C++继承而来,其值类型的变量就是采用的值引用的存储方式,所以类型不同的值类型变量在内存中所占据的大小也不同,比如int占据4个字节,long long int 占据8个字节等;C#中的值类型变量有三种:

第一种是:基本类型变量,如int,long,char等;

第二种是结构体类型;

第三种是枚举类型;

 以下是一个简单的值引用的例子

using System;

namespace TypeValueApplication
{
    class TypeValue
    {
        static void Main(string[] arg)
        {
            int a = 10;

            Console.WriteLine("a是一个采用值语义来存储的变量,其值为:{0}", a);
            Console.ReadKey();             //此语句用于在程序结果输出之后等待一个字符键入,防止运行窗口闪退;
        }
    }
}

Console.WriteLine("a是一个采用值语义来存储的变量,其值为:{0}", a);该语句在输出是采用了格式化输出,C#的格式化输出采用的格式控制符是“{}”,在花括号中写明需要在此处输出的变量的位置,即第一个字符串结束之后,出现的变量的位置就是从左往右依次从0开始给这些变量编号;

C#中的结构体类型属于值类型,与C语言的结构体类型有很多相似之处,但也有一些略微的差别,如下是一个简单的声明结构体类型变量的例子

//这是一个定义结构体类型的例子,在C#语言中结构体类型的变量属于值类型的变量,C#中的结构体变量与C语言中的结构体变量稍微有一些不同,以下将会列出一些两者的区别
using System;

//如下定义了一个结构体类型
struct infor_id
{
    public string name;
    public string gender;
    public string id_number;
    public string birthday;
    public void out_infor()
    {
        Console.WriteLine("学号:{0}\n姓名:{1}\n性别:{2}\n出生日期:{3}\n", id_number, name, gender, birthday);
    }
}


namespace StructExampleApplication
{
    class StructExample
    {
        static void Main(string[] args)
        {
            infor_id a;
            a.name = "张三";
            a.gender = "女";
            a.id_number = "1001";
            a.birthday = "2002-10-9";
            a.out_infor();
        }

    }
}

 对于C#中的结构体而言,结构体类型中的成员默认的访问控制方式是私有的,关于C#中的默认访问控制权限的问题可以去看看这个博主的文章,写的很详细,博客链接:http://t.csdn.cn/Pj1xh;

除此之外在C语言中当我们定义一个结构体类型struct mystruct{   结构体  };时若我们想要用该结构体类型去定义一个变量时,方法是struct mystruct a;而在C#中定义名字相同的结构体类型,用该结构体类型去定义其它类型的变量,方法是 mystruct a;此时不需要带上定义结构体类型的关键字struct;

还有就是枚举类型,C#中的枚举类型和C语言中的枚举类型是相似的,都是为了给一组整数值取一个名字使整数的含义更加的清晰;

2.引用类型:

C#中的引用类型有:

  • 对象类型:对象(object)类型是所有其它类型的基类,任何其它类型都是继承自对象类型,因此,可以给对象类型赋予其它任何类型的值
  • 类类型:类是具有相同属性和行为一系列对象的抽象;C#中既有预定义的类(string,Array)供用户使用。也允许用户自己定义类;
  • 字符串(string)类型:C#中将字符串视为对象,字符串类型变量采取的是引用语义的存储方式,即存储的是字符串对象的内存地址而非字符串对象本身,字符串(string)类型的基类是.NET基类System.String。System.String是一个功能强大且用途广泛的基类,其封装了字符串的常用操作,如查找,比较,替换,求子串,求串长,大小写转换等。
  • 数组(Array)类型:数组是一组类型相同的有序数据,数组按照数组名,数组元素的类型,以及数组的维数来描述,C#中的数组是System.Array类的对象;

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

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

相关文章

企业如何运用CRM实现企业数字化战略布局

随着数字化时代的到来,越来越多的企业开始意识到数字化转型的重要性,而CRM(客户关系管理)系统则是企业数字化战略布局中的重要一环,也逐渐受到越来越多企业的关注。 那么,企业如何运用CRM实现数字化战略布局…

自动化测试实战(一)12306火车票网站自动登录工具

还记得2011年春运,12306火车票预订网站经常崩溃无法登录吗。 今天我们就开发一个12306网站自动登录软件。 帮助您轻松订票 Web的原理就是,浏览器发送一个Request给Web服务器,Web服务器处理完这个请求之后发送一个HTTP Response给浏览器。 如…

Mybatis源码细节探究:MappedStatement和Cache对象对照关系研究

给自己的每日一句 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽…

《面试1v1》类加载过程

我是 javapub,一名 Markdown 程序员从👨‍💻,八股文种子选手。 面试官: 你了解Java的类加载过程吗?跟我聊聊classes是如何加载到JVM中的。 候选人: Java的类加载过程由加载、验证、准备、解析和初始化5个…

5月底了,现在不想着跳槽可就晚了

前两天跟朋友感慨,今年的铜三铁四、裁员、疫情导致好多人都没拿到offer!现在已经5月底了,具体金九银十只剩下三个月。 对于想跳槽的职场人来说,绝对要从现在开始做准备了。这时候,很多高薪技术岗、管理岗的缺口和市场需求也出来了…

五、常用提升物体的方式

机器人在运动中伸展和提升功能,历来是比赛中机器人的一个重要的性能指标,因为按 比赛要求,机器人在上场前必须经过体积大小的检测,而在场地中如果能够有更好的伸展性 能将对比赛成绩十分有利,因此机器人提升自身高度以…

SAP-MM发票校验容差详解

MIRO发票校验容差详解 MIRO发票校验容差是指收货业务与发票校验业务之间的差异,这种差异可 能是物料价格差异、收货数量差异、收货金额差异等等,总之,发票校验的容差 内容最为丰富,容差类型有很多种,如下表所示&…

【ChatGPT插件第一期】28个ChatGPT插件,让你的学习、工作、生活效率翻倍!

文章目录 人工智能福利文章什么是ChatGPT插件如何使用ChatGPT插件28个插件全解读写在最后 人工智能福利文章 【分享几个国内免费可用的ChatGPT镜像】【10几个类ChatGPT国内AI大模型】【用《文心一言》1分钟写一篇博客简直yyds】【用讯飞星火大模型1分钟写一个精美的PPT】 Cha…

Linux I2C驱动分析4 - GPIO模拟I2C

一. 前言 在嵌入式开发中,由于芯片的I2C接口有限,或者出于硬件画板的方便,我们都需要将普通的GPIO模拟I2C接口使用。出于对这样的需求,Linux-2.6.x已经有相关代码了,Linux-3.x有标准的内核选项支持该功能,内…

模特信息管理系统的开发与实现(ASP.NET,SQLServer)

需求分析 模特信息管理系统主要给商家和模特用户提供服务,系统分为前台和后台两部分。 本研究课题重点主要包括:活动管理,商家管理,模特管理,系统公告管理和活动报名管理。 活动管理模块主要实现活动更新、活动添加、活…

生鲜农产品冷链物流配送路径优化模型构建及算法实现

摘要:本案例讲述的案例为生鲜农产品冷链物流配送路径优化,涉及的目标函数成本包括碳排放成本、固定成本、运输成本、货损变质成本、时间惩罚成本。 目标种类:单目标模型。 求解方法:基础版蚁群算法改进版蚁群算法。 整体对标层…

快速掌握EasyExcel在web场景中的应用(读和写)

目录 一、引入依赖 二、设置表头 三、web下载模板 四、测试下载功能 五、复杂表头 六、写入数据 七、格式优化 7.1 日期自定义转换 7.2 列宽行高注解 八、动态表头 九、动态表格写入数据 一、引入依赖 <dependency><groupId>com.alibaba</groupId>…

Linux——生产者消费者模型和信号量

目录​​​​​​​ 基于BlockingQueue的生产者消费者模型 概念 条件变量的第二个参数的作用 锁的作用 生产者消费者模型的高效性 生产者而言&#xff0c;向blockqueue里面放置任务 消费者而言&#xff0c;从blockqueue里面拿取任务&#xff1a; 总结 完整代码(不含存储…

从零开始搭建一个moveit2简单机械臂模型

文章目录 前言一、设计一个简单机械臂二、构造创建文件关系CMakeLists.txt 修改增加如下&#xff1a;package.xml 修改增加如下&#xff1a;urdf.rviz 全文如下&#xff1a;demo.launch.py 全文如下&#xff1a; launch rviz构造link构造joint 总结 前言 在网上搜了许多文章&a…

游戏互动,用Python点燃【儿童节】的欢乐!

当孩子们踏入人生的旅途时&#xff0c;他们需要的并不仅仅是学习知识&#xff0c;更需要的是在快乐的氛围中成长。六一儿童节即将来临&#xff0c;让我们用Python代码为孩子们送去一份特别的礼物吧&#xff01; 在本篇文章中&#xff0c;我会带领大家一起探索如何利用Python代…

php中文字符串提取方法,preg_replace 和preg_match_all区别

在php中&#xff0c;可以利用以下两种函数来只提取字符串的中文字符 preg_replace()函数 preg_match_all()函数 方法1&#xff1a;使用preg_match_all()函数 preg_match_all()函数配合正则表达式“/[\x{4e00}-\x{9fff}]/u”可以过滤字符串&#xff0c;只获取中文字符。 会…

chatgpt赋能python:Python中[:3]的用法介绍

Python中[:3]的用法介绍 Python是一种高级编程语言&#xff0c;经常被用于数据科学、机器学习、人工智能和Web应用程序开发。在Python中&#xff0c;有许多有用的编程技巧和语法&#xff0c;其中之一就是[:3]。 什么是[:3]&#xff1f; 在Python中&#xff0c;[:3]是一种称为…

研发工程师玩转Kubernetes——使用Ingress进行路由

依据微服务理念&#xff0c;我们希望每个独立的功能由一个服务支持。比如有两个接口&#xff1a;http://www.xxx.com/plus和http://www.xxx.com/minus&#xff0c;前者由一个叫plus-service的服务支持&#xff0c;后者由一个叫minus-service的服务支持。这样就需要一个路由层&a…

华为OD机试真题B卷 Java 实现【查找两个字符串a,b中的最长公共子串】,附详细解题思路

一、题目描述 查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。 注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开! 数据范围:字符串长度1≤length≤300 。 二、输入描述 输入两个字符串…

牛客网刷题学习SQL(五)

SQL25 查找山东大学或者性别为男生的信息 分析&#xff1a; 查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据&#xff0c;结果不去重。 山东大学 --》 where university“山东大学” 男性—》where gender “male” 结果不去重 所以上面不能使用or&…