C#入门(1):程序结构、数据类型

一、C#程序结构

第一个C#程序

using System;namespace base_01
{class Program{#region  代码折叠块static void Main(string[] args){//控制台输出Console.WriteLine("Hello World!");Console.Write("C#是微软的编程语言");  //不换行输出//Console.ReadKey();  //控制台等待,VS2017之后的高版本不需要这句}#endregion}
}

代码说明:

(1)每个程序只能有一个Main方法,且使用static修饰;

(2)#region 代码折叠块, #endregion可以实现代码块折叠;

(3)C#需要引用命名空间,类似于C++添加头文件,命名空间里有相关类。例如Console是System名字空间里的类;

(4)控制台输出:C#使用Console.WriteLine在控制台输出文本,它可以输出各种数据类型的值,包括 stringintdouble 等。以下是一些常用的 Console.WriteLine 写法。

  1. 输出字符串:

    Console.WriteLine("Hello, World!");
    
  2. 输出变量的值:

    string name = "John";
    Console.WriteLine(name); // Outputs "John"
    
  3. 使用占位符输出变量的值:

    int age = 30;
    Console.WriteLine("I am {0} years old.", age); // Outputs "I am 30 years old."
    

    在这个例子中, {0} 是一个占位符,它会被 age 变量的值替换。

  4. 输出多个变量的值:

    string name = "John";
    int age = 30;
    Console.WriteLine("My name is {0} and I am {1} years old.", name, age); // Outputs "My name is John and I am 30 years old."
    
  5. 输出数值:

    Console.WriteLine(123); // Outputs "123"
    Console.WriteLine(123.45); // Outputs "123.45"
    
  6. 输出布尔值:

    Console.WriteLine(true); // Outputs "True"
    
  7. 输出对象的字符串表示(通常是通过调用对象的 ToString() 方法得到的):

    DateTime now = DateTime.Now;
    Console.WriteLine(now); // Outputs the current date and time
    
  8. $输出符
    C# 6.0 引入了一种新的字符串插值语法,允许在字符串中直接包含表达式。这种语法使用 $ 符号在字符串前面声明。表达式用 {} 包围,并直接在字符串中插入。

以下是一些使用 $ 进行字符串插值的例子:

string name = "John";
Console.WriteLine($"Hello, {name}!"); // Outputs "Hello, John!"int age = 30;
Console.WriteLine($"I am {age} years old."); // Outputs "I am 30 years old."double pi = Math.PI;
Console.WriteLine($"Pi is approximately {pi}."); // Outputs "Pi is approximately 3.14159265358979."DateTime now = DateTime.Now;
Console.WriteLine($"The current date and time is {now}."); // Outputs the current date and time

在这些例子中,{name}{age}{pi}{now} 是表达式,它们会被它们的值替换。

此外,你还可以在 {} 中包含复杂的表达式,甚至是格式字符串:

double pi = Math.PI;
Console.WriteLine($"Pi to 2 decimal places is {pi:F2}."); // Outputs "Pi to 2 decimal places is 3.14."

在这个例子中,:F2 是一个格式字符串,它指示 pi 的值应该以固定点数(即小数)的形式显示,并且小数部分应该有两位。

总的来说,Console.WriteLine 是一个非常灵活的方法,可以用来输出各种类型的数据,并且支持多种格式的输出。

二、C#代码注释

(1)3个斜线然后回车可以注释方法。
(2)2个斜线普通注释
(3)/**/多行注释

三、变量命名规则

​​在C#中,变量命名遵循一些基本规则和规范:

  1. 合法字符:变量名可以包含字母、数字和下划线。但是,变量名必须以字母或下划线开头,不能以数字开头。

  2. 区分大小写:C#是大小写敏感的编程语言,这意味着myVariableMyVariable在C#中会被视为两个不同的变量。

  3. 关键字:你不能使用C#的关键字(如intdoubleif等)作为变量名。如果你想用关键字作为变量名,可以在关键字前加上@符号,例如@int。但一般来说,这并不是一个好的做法。

  4. 长度:理论上,变量名的长度没有限制,但是为了代码的清晰性,最好保持变量名在合理的长度。

  5. 有意义的名称:变量名应该描述它所存储数据的内容或用途。使用有意义的变量名可以提高代码的可读性。

除了这些基本规则之外,还有一些命名规范通常在C#编程中被遵循:

  • PascalCase:在C#中,常量和类型名(如类名和枚举名)通常遵循PascalCase命名规范,即每个单词的首字母大写,例如MyClassMaxValue

  • camelCase:局部变量和方法参数通常遵循camelCase命名规范,即第一个单词的首字母小写,后续单词的首字母大写,例如myVariablemaxValue

这些规则和规范有助于保持代码的清晰性和一致性,尤其是在大型项目或团队工作中。

四、C# 数据类型

在C#中,数据类型被分为两种主要类型:值类型(Value types)和引用类型(Reference types)。这两种类型的主要区别在于它们存储和访问数据的方式。

在这里插入图片描述

值类型

值类型(Value types)直接包含数据。比如整数,浮点数,布尔值,字符和结构等。值类型的变量保存实际的数据值。当你把一个值类型的变量赋值给另一个值类型的变量时,实际上是复制了一份数据,两个变量可以独立变化,互不影响。

C#中的基本值类型有:

  • 整型: sbyte, byte, short, ushort, int, uint, long, ulong
  • 浮点型: float, double
  • 十进制类型: decimal
  • 布尔型: bool
  • 字符型: char
  • 结构型: struct, enum

示例代码

下面是一些示例代码:

int number = 10; // 整型
float rate = 4.5f; // 浮点型
bool flag = true; // 布尔型
char letter = 'A'; // 字符型
decimal price = 19.95m; // 十进制类型// 枚举(enum)
enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };// 结构(struct)
struct Point
{public int X;public int Y;
}

enum用法

假设我们有一个表示一周中的天的枚举,并且我们在一个名为Schedule的类中使用这个枚举。我们可以创建一个方法来输出今天是星期几:

public enum DayOfWeek
{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
}public class Schedule
{public DayOfWeek Day { get; set; }public void PrintDay(){Console.WriteLine($"Today is {Day}.");}
}

在上述代码中,Schedule类有一个Day属性,其类型为DayOfWeek枚举。PrintDay方法会输出Day的值。

然后,你可以在Main方法中创建一个Schedule对象,并测试这个方法:

class Program
{static void Main(){Schedule schedule = new Schedule();schedule.Day = DayOfWeek.Monday;schedule.PrintDay();  // Outputs "Today is Monday."schedule.Day = DayOfWeek.Friday;schedule.PrintDay();  // Outputs "Today is Friday."}
}

在这个例子中,我们首先设置DayDayOfWeek.Monday,然后调用PrintDay方法,它会输出"Today is Monday.“。然后我们将Day改为DayOfWeek.Friday,并再次调用PrintDay方法,它会输出"Today is Friday.”。

decimal用法

decimal 是C#中用于存储十进制数的数据类型。它是一种值类型,通常用于需要高精度的数值运算,比如财务计算和货币计算。decimal 类型的范围是±1.0 x 10^-28 至 ±7.9228 x 10^28。同时,它可以存储最多28位的小数,这比其他任何浮点数据类型都要精确。

创建并初始化一个 decimal 变量的语法如下:

decimal price = 19.95m; 

注意,我们在数值后面添加了 m 或者 M 后缀,这是声明 decimal 类型变量的必要语法。

decimal 类型支持以下运算符: +, -, *, /, %。以下是一些例子:

decimal price = 19.95m;
decimal discount = 0.15m; // 15% discount
decimal discountedPrice = price - (price * discount); // Calculate discounted price

decimal 类型也支持比较操作符,如 ==, !=, <, >, <=, >=。例如:

decimal price1 = 19.95m;
decimal price2 = 20.00m;if (price1 < price2)
{Console.WriteLine("price1 is less than price2.");
}

总的来说,decimal 类型是C#中最精确的数值类型,它非常适合用于需要精确计算的场合,尤其是在计算财务数据时。

引用类型

引用类型(Reference types)不直接包含数据;相反,它们包含对内存位置的引用,这个内存位置包含实际数据。这意味着当你把一个引用类型的变量赋值给另一个引用类型的变量时,实际上是复制了引用,两个变量指向同一个内存位置,改变其中一个变量会影响到另一个变量。

C#中的基本引用类型有:

  • 类(Class)
  • 接口(Interface)
  • 委托(Delegate)
  • 数组

下面是一些示例代码:

// 类(Class)
class MyClass
{public int Number;public string Name;
}// 接口(Interface)
interface IMyInterface
{void MyMethod();
}// 委托(Delegate)
delegate void MyDelegate(int x);// 数组
int[] numbers = new int[5];

这就是C#中的基本数据类型,值类型和引用类型的介绍和代码示例。

五、const与readonly

const用法

在C#中,const关键字用于声明常量,即它的值在定义后不能更改。const字段或局部变量必须在声明时赋值,而且值必须是编译时常量。

以下是一些使用const声明常量的例子:

const int MyIntConstant = 10;
const double MyDoubleConstant = 3.14;
const string MyStringConstant = "Hello, World!";

在这些例子中,MyIntConstantMyDoubleConstantMyStringConstant都被声明为常量,并在声明时被赋予值。这些值在后续的代码中不能被更改。

值得注意的是,const关键字只能用于值类型(如intdoublebool等)和字符串类型。对于引用类型(如类和数组),你不能使用const,但可以使用readonly关键字来创建其值不能更改的变量。

总的来说,const关键字提供了一种方式来创建在编译时已知并且在程序运行时不会改变的值。这对于定义像数学常数(如π)或者固定的配置值等不会改变的值非常有用。

readonly

readonly关键字用于声明在对象的生命周期内其值不会改变的字段。readonly字段可以在声明时或在构造函数中初始化。readonly可以应用于任何类型,包括用户定义的类和结构,也可以应用于数组(但是,虽然不能更改数组引用,但可以更改数组元素)。

例如:

public class MyClass
{public readonly int MyField;public MyClass(int value){MyField = value;}
}

在这个例子中,MyField在构造函数中被初始化,然后在对象的生命周期内其值不会改变。

总结一下,constreadonly都用于创建不能更改的变量,但它们的主要区别在于:

  • const变量的值必须在编译时就知道,而readonly变量的值可以在运行时确定。
  • const只能用于值类型,枚举类型,stringnull,而readonly可以用于任何类型。
  • const变量总是静态的,而readonly变量可以是静态的也可以是实例的。
  • const变量在定义后就不能更改,而readonly变量可以在声明时或在构造函数中更改。

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

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

相关文章

Pikachu漏洞练习平台之SSRF(服务器端请求伪造)

注意区分CSRF和SSRF&#xff1a; CSRF&#xff1a;跨站请求伪造攻击&#xff0c;由客户端发起&#xff1b; SSRF&#xff1a;是服务器端请求伪造&#xff0c;由服务器发起。 SSRF形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&#xff0c;但又没有对目标…

canal1.1.7实战

1.环境搭建 canal可以用来监听mysql数据库的变化&#xff0c;用来同步数据 先下载最新的部署版本&#xff0c;release地址:Releases alibaba/canal GitHub 包下载地址: https://github.com/alibaba/canal/releases/download/canal-1.1.7/canal.deployer-1.1.7.tar.gz 下载…

前端uniapp列表下拉到底部加载下一页列表【下拉加载页面/带源码/实战】

目录 一. 图片1.2. 二.list.vue三.uni-load-more.vue最后 一. 图片 1. 2. 二.list.vue <template><view><!--列表--><scroll-view scroll-y"true" class"scroll-Y" :style"height: scrollviewHigh px;" lower-threshol…

设计模式(二)-创建者模式(3)-抽象工厂模式

一、为什么需要抽象工厂模式&#xff1f; 在工厂模式中&#xff0c;我们需要定义多个继承于共同工厂抽象基类的工厂子类&#xff0c;这些子类负责创建一个对应的对象。工厂模式存在一个缺点就是&#xff1a;每次扩展新的工厂子类&#xff0c;就会增加系统的复杂度。 如果我们…

TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt

一、换内存&#xff0c;拆闪存&#xff1a; 1、先原机开机试试是否功能正常&#xff1b; 2、拆机&#xff0c;比较难拆&#xff0c;容易坏外壳&#xff1b; 3、找到内存和闪存&#xff0c;用胶带把边上的小元件&#xff0c;电阻都贴好&#xff1b; 4、加助焊油&#xff0c;用风…

PC3329L DC-DC降压 10V-100V输入3A大流输出带EN功能实现零功耗只需极少元器件

1. PC3392L特性  通过使能脚关断实现零功耗  宽电压输入范围 10V 至 100V  最大输出电流 3A  集成功率 MOS 管  外围器件少  输出短路保护  温度保护  逐周期限流  输出电压灵活可靠  ESOP8 2. 描述 PC3392L 一款宽电压范围降压型 DC-DC 电源管…

C# 实现腾讯云多路直播流的云端混合录制

目录 应用场景 腾讯云直播和云点播 产品架构 混流显示示例 关键代码 API实现 小结 应用场景 在云考试或视频面试中&#xff0c;除了对考生、考官的实时音视频监控以防止作弊行为的发生以外&#xff0c;对直播流的音视频录制也尤为重要&#xff0c;可做为后期证据材料进…

斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语,还有批量梯度下降法、随机梯度下降法 SGD 以及它们的相关推导,还有正态方程)

假设函数定义 假设函数&#xff0c;猜一个 x->y 的类型&#xff0c;比如 y ax b&#xff0c;随后监督学习的任务就是找到误差最低的 a 和 b 参数 有时候我们可以定义 x0 1&#xff0c;来让假设函数的整个表达式一致统一 如上图是机器学习中的一些术语 额外的符号&#xf…

spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()

1.先说场景&#xff0c;在对mysql数据库表数据插入或者更新时都得记录时间和用户id 传统实现有点繁琐&#xff0c;这里还可以封装一下公共方法。 2.解决方法&#xff1a; 2.1&#xff1a;使用aop切面编程&#xff08;记录一下&#xff0c;有时间再攻克&#xff09;。 2.2&…

宝塔站点配置

我这里使用的thinkphp 框架部署的

SaleSmartly新增AI意图识别触发器!让客户享受更精准的自动化服务

AI意图识别技术是对话式AI中很重要的组成部分&#xff0c;通俗点来说就是一种可以识别用户在对话中表达的意图的技术。通过对大量数据的分析和学习&#xff0c;AI可以理解用户想要获得的信息&#xff0c;并根据这些信息来采取相应的行动或提供相应的响应。而在对话式AI中&#…

手机LiDAR-based激光雷达标定板提高无人汽车智能化程度

手机LiDAR-based 3D扫描和建模测试系统是一种利用激光雷达&#xff08;LiDAR&#xff09;技术进行三维扫描和模型创建的工具&#xff0c;它可以在手机上运行。这种测试系统可以用于各种应用&#xff0c;如地形测绘、建筑物建模、机器人视觉、无人驾驶汽车导航等。 手机LiDAR-ba…

云端援手:智能枢纽应对数字资产挑战 ——华为云11.11应用集成管理与创新专区优惠限时购

现新客3.96元起&#xff0c;下单有机会抽HUAWEI P60 Art 福利仅限双十一 机会唾手可得&#xff0c;立即行动&#xff01; 「有效管理保护应用与数据的同时实现高效互通」——华为云全力满足企业需求&#xff0c;推出全套「应用集成管理与创新」智能解决方案&#xff1a;华为云…

家电电器展示预约小程序的作用是什么

电器产品已经成为人们生活的必备品&#xff0c;如冰箱、电视机、洗衣机等&#xff0c;而这些产品的购买方式也很多&#xff0c;可以到线下门店购买&#xff0c;也可以到线上多个电商平台购买&#xff0c;如今互联网高速发展以及民众享受线上服务带来的便捷性&#xff0c;同时商…

SSL证书对网站SEO的好处

随着网络安全意识的提高&#xff0c;越来越多的网站开始采用SSL证书来保护自己的数据传输过程。那么&#xff0c;SSL证书真的能为网站SEO带来好处吗&#xff1f;下面将为您分析这个问题。 加强用户体验和信任度 SSL证书不仅能确保数据传输的安全性&#xff0c;还能让客户感受…

『亚马逊云科技产品测评』活动征文|基于next.js搭建一个企业官网

『亚马逊云科技产品测评』活动征文&#xff5c;基于next.js搭建一个企业官网 授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方…

MySQL数据库入门到大牛_基础_09_子查询(子查询分类方法;单行子查询,多行子查询;相关子查询)

前面的第三章到第八章中&#xff0c;我们讲的是查询&#xff0c;查询的基本结构已经进行了介绍&#xff0c;聚合函数学习完后已经介绍了查询语句的完整的执行流程。 子查询指一个查询语句嵌套在另一个查询语句内部的查询&#xff0c;这个特性从MySQL 4.1开始引入。本章也是查询…

3D建模基础教程:编辑多边形功能命令快捷方式

一、打开3D软件并创建新模型 首先&#xff0c;打开你的3D建模软件&#xff0c;比如Blender、Maya或3ds Max。然后&#xff0c;创建一个新的3D模型。你可以使用基本几何体来创建模型&#xff0c;也可以导入现有的模型。 二、进入编辑多边形模式 在主工具栏中&#xff0c;找到并…

使用JDK自带java.util.logging.Logger引起的冲突问题

现象&#xff1a; 应用代码如下&#xff1a; import javax.script.ScriptEngineManager;ScriptEngineManager manager new ScriptEngineManager(); manager.getEngineByName("JavaScript"); 在TongWeb8上运行出错&#xff0c;日志如下&#xff1a; Servlet.servi…

WinForms C# 导入和导出 CSV 文件 Spread.NET

使用 WinForms C# 和 VB.NET 导入和导出 CSV 文件 2023 年 11 月 17 日 使用 Spread.NET 直接在 .NET WinForms 应用程序中处理 CSV 文件。 Spread.NET可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎&#xff0c;具有 450 多个函数以及导入和导出 Micros…