C#实验上机

2024-08-27 03:18
文章标签 c# 实验 .net 上机 netcore

本文主要是介绍C#实验上机,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第二章--C#语法基础:

一,注释语句

/*注释语句包含在"反斜杠* "和" *反斜杠"中,

或者两个反斜杠和换行符之中,

或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取)

要注意注释中的\,该续行符会把下一行连上来一起注释掉出错。*/
static void Main(string[] args) 
{//语句块包含在{}中  int MyInterger;//语句以;结束 string   MyString;///忽略空白字符(空格/回车/TAB) MyInterger = 17;  }
//要注意防止注释嵌套出错,可用#if,#endif预处理语句。

二,数据类型

1,基本型/内置型 用户自定义型

A,内置类型:CS使用.net FrameWork ? 库中的数据类型

sbyte = System.SByte,...


<span style="font-size:12px;color:#000000;">//结构类型
using System;
struct Student
{public int no;public string name;public string phone;public Student(int stu_no, string stu_name, string stu_phone)//构造函数,作为结构体的构造函数,要么给变量全部赋值,要么保持默认{no = stu_no;name = stu_name;phone = stu_phone;}
}
class douge
{public static void Main(){Student stu=new Student(945546,"zhangsan","12035884");Console.WriteLine(stu.no);Console.WriteLine(stu.name);Console.WriteLine(stu.phone);//Console.Read();}
}</span>
<span style="color:#000000;">
//使用枚举
using System;
class enumtest
{enum color : long { Red = 56565654L, Green, Yellow, Blue = 355L };//声明枚举的元素为LONG型public static void Main(){long a = (long)color.Green;long b = (long)color.Blue;Console.WriteLine("Green={0}",a);Console.WriteLine("Bule={0}", b);Console.Read();}
}</span>
<span style="color:#000000;">
//数组的引用
using System;
class test
{static void Main(){int i,j;int[] arr = new int[5];for (i = 0; i < arr.Length; i++){arr[i] = i<<4;}for (j = 0; j < arr.Length; j++){Console.WriteLine("arr[{0}]={1}", j, arr[j]);}Console.Read();}
}</span>
<span style="color:#000000;">
//交错数组的举例using System;
class ArrayTest
{static void Main(){int [][] arr=new int [2][];arr[0]=new int [5] {1,3,5,7,9};arr[1]=new int [5]{2,4,6,8,10};for(int i=0;i<arr.Length;i++){System.Console.Write("Element({0}):",i);for(int j=0;j<arr[i].Length;j++){Console.WriteLine("{0}{1}",arr[i][j],j==(arr[i].Length-1)?"":"");}System.Console.WriteLine();}Console.Read();}
}</span>
<span style="color:#000000;">
//ArrayList类的使用
using System;
using System.Collections;
class HE
{static void Main(){ArrayList books = new ArrayList();books.Add("C#程序设计!");books.Add("面向对象编程思想");Console.WriteLine("count:{0}", books.Count);Console.WriteLine("capacity:{0}", books.Capacity);Console.WriteLine();Console.WriteLine("使用迭代器访问集合中的对象");foreach (object book in books){Console.WriteLine(book);}Console.WriteLine();Console.WriteLine("使用For循环访问集合中的元素");{for (int i = 0; i < books.Count; i++){Console.WriteLine(books[i]);}}Console.Read();}
}</span>
B,用户定义类型包括:

类类型(class)

结构类型(struct)

接口类型(interface)

2,值类型(Value Types)和引用类型(Reference Types)

A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)

B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。

引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型

结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。

3,数据类型转换

隐式转换:从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。

显式转换

三,变量:

1,普通变量:

(1),命名规则:字母或_或@ + 字母或_或数字 (/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)

(2),声明变量: 变量类型 变量名

变量赋值:变量 = 要赋的值

C#变量被访问之前必须被初始化;否则编译时会报错。因此,不可能访问一个未初始化变量(如不确定的指针、超出数组边界的表达式)。变量在使用前最好习惯是要先声明和初始化。

(3)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。
int i;string text;//在循环外未初始化for (i = 0;i<10;I++){text = "Line" + Convert.ToString(i);//在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。Console.WriteLine("{0},text);}Console.WriteLine("Last txet output in loop:{0},text);//出错。改正方法是在循环外初始化:string text="";

(4)命名约定:简单的用camelCase,复杂的用PascalCase ?

(5)变量的七种类型:
class A{public static int x;//静态变量,存在期从类装载直到该程序结束。int y;//非静态变量,或实例变量,从类实例创建到实例空间释放。/*v[0]是数组元素,a是值参数,b是引用参数,c是输出参数 */void F(int[] v,int a,ref int b,out int c){int i = 1;//局部变量,不会被初始化c = a + b++;//}}
2,枚举
  enum 枚举名:枚举值类型(默认是int,默认赋值0,1,2...)  {   枚举值1=...,   枚举值2=...,   枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1   ...  }  枚举名 变量名=枚举名.枚举值namespace 
3,结构
  struct 结构名:  {   访问方式1 变量类型1 变量名1;//访问方式public/private   访问方式2 变量类型2 变量名2;     ...  }  结构名 结构变量名;  结构变量名.枚举值=...;

4,一维数组

  变量类型[] 数组名 = new 变量类型[元素个数]{元素0,元素1,元素2...}//元素个数必须是整数或者整数常量,而且必须与后面的元素列值个数相同,否则出错。元素个数的new声明和后面的元素列值可以只选一个,就能声明并初始化数组。

遍历方法
A,For循环到.Lengthfor(i=0,i<friendNames.Length,i++){Console.WriteLine(friendNames[i]);}B,Foreach进行只读访问foreach(string listName in friendNames){Console.WriteLine(listName);}

5,二维数组(多维)

  变量类型[,] 数组名 = new 变量类型[一维元素个数,二维元素个数]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}

6,直角数组(交错数组,数组中的数组)
七,条件语句

A,If语句:通用判断
  If (条件1)    代码1;  Else    代码2;  If (条件1)  {}  Else  {}
B,Switch语句:用于同条件多结果判断
  Switch (条件)   {    Case 结果1:    代码1;    break;    Case 结果2:    代码2;    break;    Case 结果3:    代码3;    goto Case  结果2;//此时Case..相当于一个Label    Case 结果4:    代码4;    Return;    Case 结果5:    Case 结果6:    Case 结果7:    代码567;//只要满足上面三个Case之一就执行。    break;    ...    Default:    代码;    break;   }

C,三元运算语句:(条件)?True结果:False结果

常用于简单赋值语句:string myString = (myInteger<10)?"Less than 10":"Great than or equal to";

或者用于简单格式化文本语句:Console.WriteLine ?("I am {0} year{1} old.",myinteger,myinteger==1?"":"s");

八,循环语句:

A,Do...While: 当条件为True时循环。
  Do  {...}  While(条件);//分号不可少
B,While...: 当条件为True 时循环。
  While(条件)  {...}
C,For...: 使用计数器循环。
  For (变量;条件;操作)//可以在此时声明变量,但作用域就仅限于循环内了。  {...  Break;//跳出整个循环  Return;  Continue;//中止当前循环,继续下一个循环  Goto 标签;//禁止从循环外部用goto跳入循环内部  }
九,函数
A,函数定义:static 返回值类型/void 函数名(参数类型1 参数1,参数类型2 参数2,...){...return 返回值;//return必须在函数结束前被处理,不能跳过//return ;//当用于void时用不带返回值的return来中止函数。}
B,参数数组:
static int sumVals(params int[] vals){int sum = 0;foreach(int val in vals){sum+=val;}return sum;}static void Main(string[] args){int sum = sumVals(1,5,2,9,8);Console.WriteLine("Summed Values = {0}",sum);}C,值传递参数/引用传递参数/out输出参数static void showDouble(ref int val)//引用传递参数{val*=2;Console.WriteLie("val doubled = {0}",val);}static void showDouble2(int val)//值传递参数{val*=2;Console.WriteLine("val doubled = {0}",val);}static void showDouble3(int val,out int valIndex)//out输出参数{val*=2;valIndex++;Console.WriteLine("val doubled = {0}",val);}int myNmuber = 5;showDouble(ref myNumber);//引用传递参数,会改变myNumber值,所以要求myNumber必须不是常量或者未初始化的变量。showDouble2(myNumber);//值传递参数,不会改变myNumber值int valindex;//out输出参数,不用初始化,初始化了也会在函数开始执行时丢失值。showDouble3(myNumber,out valIndex);
D,全局变量

static/const 变量名//const定义的全局变量是只读的

当全局变量与局部变量同名时,局部变量优先,要用类似class1.myString来引用全局变量。

E,Main()函数;
static void Main()static void Main(string[] args)//args是函数命令行参数static int Main()//返回一个表示函数终止状态的int值static int Main(string[] args)//返回一个表示函数终止状态的int值
F,结构中的函数

G,同名函数的重载:同名,签名不同,系统自动识别使用哪个函数

H,委托:用于把引用存储为函数以灵活调用函数

十,面向对象基础

十一,类

1,类的定义
class 类名{//类成员}internal/publicsealed/abstract
十和,接口
interface IMyInterface{//接口成员}


这篇关于C#实验上机的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1110476

相关文章

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

C#下Newtonsoft.Json的具体使用

《C#下Newtonsoft.Json的具体使用》Newtonsoft.Json是一个非常流行的C#JSON序列化和反序列化库,它可以方便地将C#对象转换为JSON格式,或者将JSON数据解析为C#对... 目录安装 Newtonsoft.json基本用法1. 序列化 C# 对象为 JSON2. 反序列化

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

基于C#实现PDF转图片的详细教程

《基于C#实现PDF转图片的详细教程》在数字化办公场景中,PDF文件的可视化处理需求日益增长,本文将围绕Spire.PDFfor.NET这一工具,详解如何通过C#将PDF转换为JPG、PNG等主流图片... 目录引言一、组件部署二、快速入门:PDF 转图片的核心 C# 代码三、分辨率设置 - 清晰度的决定因

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

C#高效实现Word文档内容查找与替换的6种方法

《C#高效实现Word文档内容查找与替换的6种方法》在日常文档处理工作中,尤其是面对大型Word文档时,手动查找、替换文本往往既耗时又容易出错,本文整理了C#查找与替换Word内容的6种方法,大家可以... 目录环境准备方法一:查找文本并替换为新文本方法二:使用正则表达式查找并替换文本方法三:将文本替换为图

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

C#和Unity中的中介者模式使用方式

《C#和Unity中的中介者模式使用方式》中介者模式通过中介者封装对象交互,降低耦合度,集中控制逻辑,适用于复杂系统组件交互场景,C#中可用事件、委托或MediatR实现,提升可维护性与灵活性... 目录C#中的中介者模式详解一、中介者模式的基本概念1. 定义2. 组成要素3. 模式结构二、中介者模式的特点

C#中SortedSet的具体使用

《C#中SortedSet的具体使用》SortedSet是.NETFramework4.0引入的一个泛型集合类,它实现了一个自动排序的集合,内部使用红黑树数据结构来维护元素的有序性,下面就来介绍一下如... 目录基础概念主要特性创建和初始化基本创建方式自定义比较器基本操作添加和删除元素查询操作范围查询集合运