C#基础— 02

C#自学第一天 Console.Write(“hello!”);//输出 Console.ReadKey();//等待输入一个字符后再关闭窗口 快捷键 Ctrl K C 注释 Ctrl K U 取消注释 Ctrl K D 代码对齐 Ctrl J智能提示 /* /不能嵌套,因为系统只识别第一个/作为结束 文档注释/// 如图,在打///后会自动弹出上图所示,只需要在里面填充说明,注释里的内容会在智能提示中弹出。 类型 系统默认小数为double,如float f=3.50 错误,要在后.. 阅读详情

一、基本用法

1、Console.ReadLine();等待用户输入一行字符串后按下回车,一次读入一行。

2、Console.ReadKey();等待用户输入一个字符(任意键),一次读入一个字符。常加在程序的结尾处,方便调试的时候,控制台窗口能暂停等待用户输入,而不会一闪而过。

3、C#条件表达式为    条件表达式 ? 分支1 : 分支2  。条件表达式为真时,输出分支1的结果;条件表达式为假时,输出分支2的结果。

4、switch结构:

(1)、变量(op)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。

(2)、switch()  中的变量可以是 :int 、 string、bool、char、enum 等,必须是一个定值。其应用实例如下:

 switch (op)
            {
                case "a":
                    result = num1 + num2;
                    break;
                case "s":
                    result = num1 - num2;
                    break;
                case "m":
                    result = num1 * num2;
                    break;
                case "d":
                    if (num2 != 0)
                    {
                        result = num1 / num2;
                    }
                    break;
                default:
                    break;
            }

 5、字符串中的占位符及字符串内插(控制内插表达式的格式)

Console.WriteLine("今天是{0}年{1}月",2019,3);
//{0},{1}分别为两个变量的占位符,代表后面的两个变量。
//输出的结果:今天是2019年3月。

string Name="jeff";
Console.WriteLine($"他的名字是{Name}");
//此处{Name}为变量的上面变量的引用,
//将输出:他的名字是jeff

6、输出方式:

static void Main(string[] args)
        {
            string[] name = {"A","B","C","D","E","F","G"};
            int[] score = { 80, 90, 98, 68, 94, 66, 86 };
            int temp = score[0], j = 0;
            for(int i = 0; i < name.Length-1; i++)
            {
                if (score[i] >= score[i + 1])
                {
                    temp = score[i];
                    j = i;
                }
            }
            Console.WriteLine("{0} 是最高分,成绩为:{1}", name[j], temp);
            //{0},{1}为占位符,后面的name[j],temp 为其实参值。
            Console.WriteLine(name[j] + " 是最高分,成绩为: " + temp);
            Console.WriteLine($"{name[j]} 是最高分,成绩为 {temp}");
            //$符号,后面的{}中的内容为该变量的值。
            Console.ReadKey();
        }

7、nameof  运算符返回任何:变量、类型或类型成员的名称:

using System;
using System.Collections.Generic;

namespace Practice01
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(nameof(System.String));
            int j = 5;
            Console.WriteLine(nameof(j));
            List<string> names = new List<string>();
            Console.WriteLine(nameof(names));
            string s = "this is a test";
            Console.WriteLine(s);

            Console.ReadKey();
        }
    }
}

 8、使用 static 修饰的变量为静态变量,意味着该变量是这一类的所有对象所共享。非静态变量的值则对于这一类的每一个对象是唯一的。

private static int s = 12345678;

9、out 参数的使用,用来表示转化是否成功。int.TryParse(input, out int result) 返回值为bool类型,表示转化是否成功。

static void Main(string[] args)
        {
            var input = "123456";
            if (int.TryParse(input, out int result)) //将用字符串表示的数字(input变量的值),转换成整型数字。
            {
                Console.WriteLine(result);
            }
            else
                Console.WriteLine("Could not parse input");

            Console.ReadKey();
        }

10、var 和 object 关键字。

  • var 关键字可代替任何类型 ,编译器会根据上下文来判断你到底是想用什么类型的 。至于什么情况下用到var 就是你无法确定自己将用的是什么类型, 就可以使用。var 类似 object 但是效率比 object 高点.。(C# 中的var关键字)
  • object 关键字是C#中所有类型的基类,所有的类型都继承于它,所有类型也都可以用它表示。经常用在编译时无法确定对象类型时使用,使用时要避免类型转换。

11、is 运算符,判断某一变量是否为该类型。

object s = 20;
if(s is int number) //判断s是否是整型的值,在此处定义了一个整型值number
//等价于 if(s is int)
{
    Console.WriteLine(s.GetType());
    Console.WriteLine($"The value of s is: {number}");
}
else
    Console.WriteLine($"{s} is not a int");

12、GetType() 函数返回变量的类型

var s = "This is just a test." ;
Console.WriteLine(s.GetType()); //将返回变量s的类型。

13、Lambda 表达式:  =>  。(参数列表)=>表达式或语句块 

14、@ 字符的作用是:除了 \" 外,让其他的任何转义字符都不会再起作用。

string str1 = "hello this is \n a test !";
Console.WriteLine(str1);

//当在前面加上@时,会让转义字符不再生效
string str1 = @"hello this is \n a test !";
Console.WriteLine(str1);

 


二、循环结构

1、while 循环,当条件表达式为真时,进行循环操作。

while (条件表达式)
            {
                循环语句
            }

2、for循环常用于已知循环次数时。

for(变量声明和赋值;循环条件;变量自加)
{
  循环体
}

3、do.......while循环,第一次执行循环体是没有经过条件判断的,后面再执行需要先判。如下所示:

 int sum = 0, x = 10;
            do
            {
                sum += 2;
                x++;
            } while (x < 20);

三、数组

1、一维数组的声明方式: 数据类型[ ] 数组名 = new 数据类型[长度]; 

//长度为3的字符类型数组的几种声明方式
char[] a=new char[3]; //只声明数组的大小
char[] d=new char[3]{'A','B','C'};  //若指定数组大小的同时,对其进行初始化,则数组的大小必须要和初始化的元素个数相同,否则会报错。
char[] b=new char[]{'A','B','C'};//初始化数组,根据元素个数来进行推断数组的大小
char[] c={'A','B','C'};

     数组经过初始化以后,数组元素有默认的初始值, double 类型为 0.0 , int 类型为 0 , char 类型为 'a' , bool 类型为 false , string 类型为 null 。  数组名.Length 会返回数组的长度(即数组元素的个数)。

2、访问数组

(1)通过for循环

(2)foreach关键字

   

int[] array = {1,2,3,4,5,6};
foreach(int x in array)
{
   Console.Write(x+" ");
}

3、二维数组的声明与访问

int[,] array = new int[2,3]; 
//声明了一个二维数组。表示2个一维数组,每个一维数组包含3个变量,总共2*3=6个数组元素
array[0,2] = 66;//为二维数组的第一行,第3列赋值

int[,] s = new int[4,2] {{60,70},{80,90},{100,101},{102,103}};
//定义了一个4行2列的二维数组,表示4个一维数组。
for(int j=0; j<s.GetLongLength(0); j++)
{
  Console.WriteLine("语文:{0},数学{1}",s[j,0],s[j,1]);
}
//s.GetLongLength(0)返回数组中一维数组的个数。

 

 

 

 


参考资料:

[1]  C# Console.ReadLine() 与 Console.ReadKey() 用法

c# 任务(Task)以及异步 await(等待) 、Async(异步) Task出现之前,微软的多线程处理方式有:Thread→ThreadPool→委托的异步调用,虽然也可以基本业务需要的多线程场景,但它们在多个线程的等待处理方面、资源占用方面、线程延续和阻塞方面、线程的取消方面等都显得比较笨拙,ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。Task.WhenAny(tasks.ToArray()).ContinueWith(x => Console.WriteLine("某个Task执行完毕")); 阅读详情

相关推荐

坐标转换C#(Gcj02、wgs84、bd09互转)

using System; using System.Collections.Generic; using System.Text; namespace GMap.NET.Util { public static class ConvertGPS { private static double pi = 3.1415926535897932384626; private static double...

qq_35119964的博客 6379

C#等待的实现方法

wait的使用方法

qq_42697593的博客 3050

C# 精确转换WGS84、GCJ02、BD09坐标系:实现与优化

这些坐标系之间存在一定的偏差和转换关系,特别是在中国境内,WGS84与GCJ02、BD09之间的坐标存在不同程度的偏移。通过理解这些坐标系之间的偏差以及转换算法,我们可以在实际应用中,尤其是在中国境内的地图和定位服务中,准确处理经纬度数据。在实际开发中,根据不同的需求选择适合的坐标转换算法,并对转换精度进行优化,是确保地理定位准确性和可靠性的关键。WGS84到GCJ02的转换存在一定的数学模型,通常是通过一定的偏移量来实现。中进行这些坐标系的相互转换,并且在高精度要求的场景下,提供相关的转换算法。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1065

C#编程,异步中的等待处理Task.Delay

Task.Delay

dxm809的博客 4457

C#实现 WGS-84与GCJ-02 经纬度坐标转换

C#-WGS-84转GCJ-02 其他语言一样用 //圆周率 private const double pi = 3.14159265358979324; //克拉索天斯基椭球体参数值 private const double a = 6378245.0; //第一偏心率 private const double ee = 0.00669342162296594323; public static GPSPoint WGS84_to_GCJ02(double wgLat, double wgLon) {

weixin_43151814的博客 246

C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码与C#代码实现)

本文详细介绍了ModbusTCP协议中0x02读输入线圈功能码的原理、发送报文、返回报文,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1654

C#基础02

01:在C#中,string str = null 与 string str = “” 请尽量使用文字或图说明其中的区别 string str=null 把这个引用指向了一个null,没有地址没有值的地方。 string str="" 把这个引用指向了一个地址,地址里面存的是空的字符。 string str=""就相当于一个人考试了,不过是考了0分; 而 string str=null 就...

qq_43227356的博客 166

C# Modbus通信从入门到精通(4)——Modbus RTU(0x02功能码与C#代码实现)

本文详细介绍了ModbusRTU协议中0x02读输入线圈功能码的原理、发送报文、返回报文,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 2927

02 认识C#

本文主要介绍了C#的版本,罗列了C#中的一些基础知识。对C#中的数、控制流和类型转换做了些概述。

puran1218的博客 388

C# Modbus通信从入门到精通(14)——Modbus ASCII(0x02功能码与C#代码实现)

本文详细介绍了ModbusASCII协议中0x03读输入线圈功能码的原理、发送报文、返回报文,C#代码实现,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1157

C#实现AT24C02 EEPROM小数存储及源码解析

AT24C02是一款常用的串行EEPROM存储器,它使用I²C总线进行通信,广泛应用于需要非易失性存储的电子系统中。该设备提供了2KB的存储空间,可以存储配置数据、用户信息等,且具有较好的抗干扰性和长期数据保持能力。EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可以随时擦写的非易失性存储器。存储容量是指EEPROM能够存储数据的总量,通常以位(bit)、字节(Byte)或者千字节(KB)、兆字节(MB)为单位进行度量。

weixin_28746213的博客 1033

C#实战:如何用5行代码搞定WGS84转GCJ02坐标(附避坑指南)

本文详细介绍了在C#开发中实现WGS84到GCJ02坐标系转换的实战方法。针对GPS设备坐标与国内地图服务不匹配的问题,文章提供了核心算法、精简代码示例,并重点分析了浮点数精度、参数传递等常见陷阱,帮助开发者确保定位应用的准确性。

ppp33的博客 695

C#实现程序等待延迟执行的方法

本文实例讲述了C#实现程序等待延迟执行的方法。分享给大家供大家参考。具体如下: [System.Runtime.InteropServices.DllImport(kernel32.dll)] static extern uint GetTickCount(); /// <summary> /// 程序等待延迟执行 /// </summary> /// <param name=ms></param> static void MySleep(uint ms) { uint start = GetTickCount(); while (GetTickCount() - start

EVA-02在.NET生态中的集成:C#调用与桌面应用开发

本文介绍了如何在星图GPU平台上自动化部署EVA-02: TEXT RECONSTRUCTION TERMINAL镜像,并将其集成到.NET桌面应用中。通过C#调用其API,开发者可以快速为办公软件或内容管理工具添加高效的图片文字提取功能,例如从发票、截图或文档图片中自动重建并获取结构化文本,从而提升工作效率。

weixin_42594427的博客 158

常用的串口通信工具MobaXterm、Bus Hound、SScom等

本文介绍了四种PC端串口通信工具的功能和使用方法:MobaXterm支持SSH、FTP、串口等多种协议;Bus Hound用于监控CAN和串口数据;SScom专为串口和网口通信设计;ScriptCommunicator可进行串口通信并绘制波形图。每种工具都有详细的操作步骤图示,包括参数设置、数据监控等关键功能,并提供了官方和个人下载地址。这些工具各有特点,适用于不同的串口通信和数据分析场景。

sanqima的专栏 2491

使用 C# 实现大华监控摄像头的控制与数据处理

本文介绍了使用C#调用大华SDK(DHNetSDK.dll)开发监控系统的方法。主要内容包括:开发准备、DLL引用设置、SDK初始化与设备登录、视频预览窗口嵌入、云台控制、抓图录像等核心功能实现。通过P/Invoke技术封装SDK接口,开发者可以快速构建具有视频监控、设备控制功能的C#应用程序。文中还提供了代码示例、常见问题解决方案,以及视频帧智能分析的扩展建议,为开发大华监控系统的二次应用提供了完整的技术指南。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1280

EVA-02在.NET生态中的集成:C#调用文本重建服务

本文介绍了如何在星图GPU平台上自动化部署🔴 EVA-02: TEXT RECONSTRUCTION TERMINAL镜像,并实现其在.NET生态中的集成。通过C#调用其文本重建服务,开发者可以便捷地为应用(如企业内部知识库智能问答系统)添加智能摘要、内容理解等能力,提升业务系统的智能化水平。

weixin_42611177的博客 178

Windows 11下Telnet端口23连接失败的终极解决方案(附详细排查步骤)

本文详细解析了Windows 11系统中Telnet端口23连接失败的常见原因及解决方案。从Telnet客户端功能启用、服务端配置检查到网络连接诊断,提供了一套完整的排查步骤,帮助用户快速定位并解决连接问题,同时给出了安全使用Telnet的建议。

win55的博客 454

C#基础深入学习02

C#基础深入学习02 哈希表(Hashtable) Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对。它使用键来访问集合中的元素。 当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。键用于访问集合中的项目。 Hashtable 类的方法和属性 下表列出了 Hashtable 类的一些常用的 属性: 属性 描述 Count 获取 Hashtable 中包含的键值对个数。 IsFixedSize 获取一个值,表示 Hash

Echo_Wish 227

YOLO26跨时代升级!YOLO26 MLCA注意力机制解读

摘要: 本文提出了一种基于多级上下文聚合(MLCA)注意力机制的改进卷积神经网络。MLCA模块通过局部和全局注意力机制动态调整特征图权重,结合了ECA注意力与自适应池化,显著提升特征表达能力。实验表明,添加MLCA后模型mAP提升12.11,准确率提高5.43。文中详细解析了MLCA1模块的工作原理,包括局部/全局池化、卷积操作和注意力加权机制,并介绍了集成MLCA的Bottleneck_MLCA模块。该机制通过多层次特征融合,在保持计算效率的同时增强模型对关键特征的敏感性。最后提供了YOLOv26-MLC

m0_71589036的博客 283

UDS19 03 和19 04服务--答疑

UDS 1903服务(reportDTCSnapshotIdentification)用于获取ECU中存储的故障码快照标识信息。该服务返回DTC编号及对应的快照记录编号,为后续使用1904服务读取详细快照数据提供依据。请求报文为"1903",响应报文格式为"5903"后接DTC编号和记录编号列表。该服务需在非默认会话模式下执行,且清除诊断信息会删除相关快照记录。1903服务是读取DTC快照数据的基础步骤,可帮助确定ECU中存储的故障快照情况。

汽车软件开发 455

C#基础学习-02

C#语言基础 扩展知识 .NET 简介 dotnet Ccharp 版本 Mono .NET Framework CLS VS #region 可以折叠 只在vs 占位符 {位置的数字} //可读性强 string str = string.Formt(“xxxx{0},xxxx{1}”,变量,变量); Console.WriteLine(str); 标准数字格式字符串 :c ...

稻草人的博客|Unity3d 297

Yolo11改进:Block改进|MixDehazeNet,用于图像去雾网络的混合结构块|即插即用|附代码

https://arxiv.org/pdf/2305.17654 图像去雾是低级视觉领域中的一项典型任务。先前的研究验证了大型卷积核和注意力机制在去雾中的有效性。然而,存在两个缺点:引入大型卷积核时容易忽略图像的多尺度特性,而注意力模块的标准串联方式没有充分考虑雾分布的不均匀性。在本文中,我们提出了一种名为混合结构图像去雾网络(MixDehazeNet)的新型框架,该框架解决了上述两个问题。具体而言,它主要由两部分组成:多尺度并行大型卷积核模块和增强并行注意力模块。与单个大型卷积核相比,多尺度的并行大型卷积

m0_47867638的博客 1273
上一篇: C#运算符的优先级
下一篇: C#中 var 变量及创建列表 List
Xu_lib
博客等级 码龄8年 184粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值