C#学习 - 初识类型、变量、方法

构成C#语言的基本元素

关键字、操作符、标识符、文本都是标记(Token),编译器能够识别

关键字(Keyword)

C#有一般关键字(C# Keyword:任何时候都是关键字)和上下文关键字(Contextual Keywords:在某些语境中时是关键字)

操作符(Operator)

也成为运算符,某些关键字也是操作符

标识符(Identifier)

标识符就是名字,比如给变量取的名字
取名规范:不能完全与关键字相同;可以使用下划线;不能以数字开头;可以用@作为前缀使用关键字作为标识符
给变量命名时最好要有意义:对类命名时要是名词或者名词复数;对类的成员命名时,属性要是名词或者名词复数,方法要是动词或动词短语…
当一个标识符中有多个单词时,首个单词小写,后续单词首字母大写(驼峰法);每个单词首字母大写(Pascal法)
变量名使用驼峰法;方法名、类名、名称空间等都是用Pascal法

标点符号

句末的“;”、还有"{}"…
在程序中不参与运算

文本(字面值)

int x = 1;//这里的1就是文本(字面值)

文本可以是整数、实数(浮点数)、字符、字符串、布尔(False & Ture)、空(NULL)

整数

整数有int(整型)、long(长整型)

int a = 3;
long b = 3L;//后面带L代表这个数是长整型

整型是用32个bit位来表示数字;长整型是用64个bit位来表示数字

实数

实数有float(单精度浮点型)、double(双精度浮点型)

float a = 1.2F;//F表示单精度浮点数
double b = 1.2D;//D表示双精度浮点数,D可以省略,带小数时,默认是double类型

单精度浮点型有32个bit位;双精度浮点型有64个bit位

字符

字符有char类型

char a = 'A';//需要用单引号,同时单引号内部只能有一个字符

字符串

有string类型

string a = "ABC";//需要用到双引号
string b = "";//双引号内可以是空
string c = "C";//双引号内也可以只有一个字符

布尔

有bool类型

bool a = true;
bool b = false;

“true”和“false”就是布尔值的文本

空(NULL)

string str = null;//代表变量str没有任何值

没用引用实例,还要去访问这个实例的方法时,运行程序会出现System.NullReferenceException错误,如:

Form form = null;
form.ShowDialog();

注释与空白

注释:

// - 行注释,这一行在此符号后面的全部注释掉
/**/ - 跨注释,两个*号之间的全部注释掉
注:行注释后紧接跨注释会导致跨注释失效;跨注释无法嵌套使用

空白:
写程序时使用空格、回车或者Tab使代码更清晰,某些情况下空白必须有
当空白留得不好时,VS2022可以用(Ctrl+K)+(Ctrl+D)进行格式化

初识类型(Type)

var x = 1;//int x = 1;
//var关键字声明的变量在赋值后,csharp编译器会自动判断出赋的是什么类型的值
Console.WriteLine(x.GetType().Name);
//打印出来是int32,就是32个bit位的整型
var y = 1.0;//double y = 1.0D;
Console.WriteLine(y.GetType().Name);
//此时打印的是double

上段代码说明C#有不同的数据类型,数据类型不仅可以声明变量,还能声明函数

初识变量

变量就是存放数据的地方

int x;//x就是变量,这就算声明完变量
x = 10;//将x赋值10,赋值要与x的类型相同
//比如整数型不能存放浮点型

初识方法

方法(函数)就是处理数据的逻辑

using System;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){Addtive m = new Addtive();//声明一个叫 m 的引用变量,创建一个Addtive的引用实例//可以用 m 来引用Addtive中的方法int n = m.Add(10, 20);//函数返回的是int,所以创建一个整型的数接收Console.WriteLine(n);}}class Addtive//创建一个类{public int Add(int a, int b)//括号内是函数的参数,需要声明//public指的是这个类外面也能访问这个方法//第一个int指的是函数Add加工完参数后返还的值的类型{int c = a + b;//加工参数的方法return c;//返还值}}
}

上段代码中的

public int Add(int a, int b)
{int c = a + b;return c;
}

这些就是函数声明

Addtive m = new Addtive();
int n = m.Add(10, 20);

上面两行就是函数调用
函数不一定需要返回值也不一定需要参数,如:

public string Time()//无参数
{int day = DateTime.Now.Day;return day.ToString();
}
public void Add(int a, int b)
{int c = a + b;Console.WriteLine(c);
}//无返回值

程序 = 数据 + 算法

算法简介

循环

打印1~100的整数

using System;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){Tool t = new Tool();t.Printf();}}class Tool{public void Printf(){for (int i = 1; i < 101; i++)//i++表示先进行循环,循环一次后i = i + 1{Console.WriteLine(i);}}}
}

递归

递归是指函数自己调用自己

using System;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){Tool t = new Tool();t.Printf(1);}}class Tool{public void Printf(int i){if (i > 100){ }else{Console.WriteLine(i);Printf(i + 1);}}}
}

计算1到100整数相加的和

循环:

using System;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){Tool t = new Tool();t.Printf();}}class Tool{public void Printf(){int j = 0;for (int i = 1; i < 101; i++){j = j + i;}Console.WriteLine(j);}}
}

递归:

using System;namespace ConsoleApp1
{internal class Program{static void Main(string[] args){Tool t = new Tool();t.Printf(1, 0);}}class Tool{public void Printf(int i, int j){if (i > 100){Console.WriteLine(j);}else{j = i + j;Printf(i + 1, j);}}}
}

高斯算式:

public void Printf(int x)
{Console.WriteLine((x + 1) * x / 2);
}

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

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

相关文章

Swift报错:“‘nil‘ is incompatible with return type ‘User‘”

func getUserById(userId: Int) -> User {if (userId ! nil) {...}return nil } 上述代码报了一个错误&#xff1a;“nil is incompatible with return type User”&#xff0c;表示“nil”与返回类型“User”不兼容。 解决方案&#xff1a; 将返回值类型改为Optional类型…

Jmeter进阶使用指南-分布式测试

当你需要模拟大量并发用户并测试应用程序的性能时&#xff0c;JMeter的分布式测试功能非常有用。分布式测试允许你使用多个JMeter实例来模拟并发用户&#xff0c;从而提供更高的负载。 下面是一个详细的介绍和讲解分布式测试的步骤&#xff1a; 准备主机和从机&#xff1a; 首…

计算机竞赛 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习的植物识别算法 ** …

Vue3---uni-app--高德地图引用BUG

先给报错信息&#xff1a;module libs/map//libs/map_min.js is not defined, require args is /libs/map_min.js 查看我引用方法&#xff1a; 本人查阅资料发现 是 require 使用的是 commonJS方式引用说这个适配Vue2可我项目是Vue3应该使用ES6语法糖 然后我有跑了项目发现BU…

蓝桥杯官网练习题(凑算式)

类似填空题&#xff1a; ①算式900&#xff1a; https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空&#xff1a;https:/…

Competitive Collaboration 论文阅读

论文信息 题目&#xff1a;Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation 作者&#xff1a;Anurag Ranjan&#xff0c; Varun Jampani&#xff0c; Lukas Balles 来源&#xff1a;CVPR 时间&#x…

JVM学习(三)--生产环境的线程问题诊断

1.如何定位哪个进程对cpu占用过高 使用top命令 2.如何定位到某个进程的具体某个线程 使用ps H -eo pid,tid,%cpu | grep 进程id (可以具体定位到某个进程的某个线程的cpu占用情况) 3.如何查看有问题线程的具体信息&#xff0c;定位到代码的行数 使用jstack 进程id |grep…

【 OpenGauss源码学习 —— 列存储(analyze)(四)】

列存储&#xff08;analyze&#xff09; AcquireSampleCStoreRows 函数es_get_attnums_to_analyze 函数CStoreRelGetCUNumByNow 函数CStore::GetLivedRowNumbers 函数InitGetValFunc 函数CStoreGetfstColIdx 函数CStore::GetCUDesc 函数CStore::IsTheWholeCuDeleted 函数CStore…

PHP调用java class 类实现文件签名

PHP调用java class 类实现文件签名 原始代码改造开始PHP内调用方式起因:对接某平台API接口,发送的文件需要做 SM3 签名,对方平台是java写的,只有java加密示例,照着java的加密算法翻译为PHP版本,在编码转换上始终有些差异。没办法,只能想办法使用他们的java方式。 原始代…

vue开发-语法和基础流程规范

当一个请求发生的时候 后端的扭转流程对标前端的扭转过程 ***vue 中 整体url触发整体流程服务流程&#xff1a; node 中定义了默认加载 vue.config.js 文件 &#xff08;vue.config.js 文件名不可更改&#xff09;-> vue.config.js 中 devServer 绑定了个 ip端口 和资源 -》…

Java版本企业工程行业管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

初学Python记

Python这个编程语言的大名当然听说过了呀&#xff0c;这几年特别火&#xff0c;火的一塌涂地。大家可以回忆一下&#xff1a;朋友圈推荐的广告里经常可以看见python的网课广告。 本学期&#xff0c;学校开设了python课程&#xff0c;这几天学习了一下入了一下门&#xff0c;感…

OpenHarmony:如何使用HDF驱动控制LED灯

一、程序简介 该程序是基于OpenHarmony标准系统编写的基础外设类&#xff1a;RGB LED。 目前已在凌蒙派-RK3568开发板跑通。详细资料请参考官网&#xff1a;https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk3568-openharmony/tree/master/samples/b02_hdf_rgb_led。 …

C++ 判断

C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件&#xff0c;以及条件为真时要执行的语句&#xff08;必需的&#xff09;和条件为假时要执行的语句&#xff08;可选的&#xff09;。 下面是大多数编程语言中典型的判断结构的一般形式&#xff1a; 判断语句 C 编…

SpringMVC之前端增删改查实现

SpringMVC是一个基于MVC架构的框架&#xff0c;它可以帮助我们实现前后端的分离&#xff0c;同时也能很好地支持前端的增删改查操作。 配置 Cloudjun <?xml version"1.0" encoding"UTF-8" ?><taglib xmlns"http://java.sun.com/xml/ns/j…

TSINGSEE青犀/视频分析/边缘计算/AI算法·人员/区域入侵功能——多场景高效运用

TSINGSEE青犀视频人员/区域入侵功能可对重要区域进行实时监测&#xff0c;对监控区域进行7*24全天候管控&#xff0c;当监测到有人员靠近、闯入时&#xff0c;AI算法后台就会立即发出告警及时通知管理人员&#xff0c;变被动“监督”为主动“监控”&#xff0c;真正做到事前预警…

2023计算机毕业设计题目 毕设选题大全

文章目录 0 前言1 java web 管理系统 毕设选题2 java web 平台/业务系统 毕设选题3 游戏设计、动画设计类 毕设选题 (适合数媒的同学)4 算法开发5 数据挖掘 毕设选题6 大数据处理、云计算、区块链 毕设选题7 网络安全 毕设选题8 通信类/网络工程 毕设选题9 嵌入式 毕设选题10 开…

Newman+Jenkins实现接口自动化测试

一、是什么Newman Newman就是纽曼手机这个经典牌子&#xff0c;哈哈&#xff0c;开玩笑啦。。。别当真&#xff0c;简单地说Newman就是命令行版的Postman&#xff0c;查看官网地址。 Newman可以使用Postman导出的collection文件直接在命令行运行&#xff0c;把Postman界面化运…

leetcode127单词接龙刷题打卡

127. 单词接龙 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。对于 1 < i < k 时&#xff0c;每个 si 都在 wordList 中。注意&am…

边缘计算物联网网关在机械加工行业中的效用分享

随着工业4.0的推进&#xff0c;物联网技术正在逐渐渗透到各个行业领域。机械加工行业作为制造业的基础领域之一&#xff0c;其生产过程的自动化、智能化水平直接影响到产品质量和生产效率。边缘计算物联网网关作为物联网技术的重要组成部分&#xff0c;在机械加工行业中发挥着越…