c# 编程学习

本文档提供了 C# 编程中实用的技巧和示例代码,包括字符串格式化、三元运算符使用、队列操作、正则表达式应用、数组处理等。同时还介绍了如何进行版本号管理、结构体遍历以及 JSON 序列化和反序列化的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

折叠代码:

全局函数(静态,公共):

字符串格式化:

三元运算符:

队列:

正则:

数组合并(byte[] 合并)

数组去重

二进制文件读取/写入

版本号

遍历结构体

Json序列化 

创建数组副本 


折叠代码:

#region 注释
//要折叠的代码
#endregion

//可选中需要包含的代码,点击鼠标右键,点击 外侧代码 ,在弹出的选项中选择

条件编译(条件运行):
在代码最顶端写#define

 

#define aa123
#if (aa123)
Console.WriteLine("yes");
#else
Console.WriteLine("no");
#endif
则会打印 "yes"

若注释//#define aa123,则会打印"no"

 

全局函数(静态,公共):

在函数前加public static 如:

public static void aaa(){}

字符串格式化:

String.Format

如:

String aaa = String.Format("Hello {0} {1}", 123, 45.67);
Console.WriteLine(aaa);
//输出为 Hello 123 45.67

三元运算符:

 语法:
     表达式1 ? 表达式2 : 表达式3;
 语义:
     先执行表达式1,执行完毕,表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果,否则执行表达式3,运算式的结果是表达式3的结果


 if(表达式1){

   表达式2;

 }else{

   表达式3;
 }

例:
a = 3>4 ? 3 : 4 ; //输出为4。
a = 3<4 ? 3 : 4 ; //输出为3。

队列:

单线程使用:Queue

多线程使用:ConcurrentQueue

多线程对队列操作时 多个线程过于频繁的队列操作,会使Queue报错,使用高效的线程安全队列 ConcurrentQueue 则会避免此问题的发生

正则:

string s1 = "aaad123d";
string regular = @".d";
MatchCollection arr=Regex.Matches(s1, regular);

Console.WriteLine(arr[0]);    //输出: ad
Console.WriteLine(arr[1]);    //输出: 3d

数组合并(byte[] 合并)

System.Linq;//需要引用System.Core

byte[] b1 = new byte[] { 1, 2, 3, 4, 5 };
byte[] b2 = new byte[] { 6, 7, 8, 9 };
b1 = b1.Concat(b2).ToArray();
//b1为 {1,2,3,4,5,6,7,8,9}

 b6 内容如下

数组去重

List<double> li1 = new List<double>(){1,2,3,1,5,6,8,5,6};
HashSet<double> hs = new HashSet<double>(li1); //此时已经去掉重复的数据保存在hashset中
double ss = hs.ElementAt(0);
//ss==1.0

二进制文件读取/写入

写入

byte[] bys;
string fileNameTime = "./123.bin";
FileStream myStream = new FileStream(fileNameTime, FileMode.Append);//创建文件
BinaryWriter myWriter = new BinaryWriter(myStream);
myWriter.Write(bys);//向文件写入二进制值

读取

string path = Application.StartupPath + "\\aaa.bin";
if (!File.Exists(path))
{
    MessageBox.Show("文件不存在", "提示", MessageBoxButtons.YesNoCancel);
}
FileStream fs = new FileStream(path, FileMode.Open);            //获取流对象
BinaryReader BR = new BinaryReader(fs);
BR.BaseStream.Seek(0, SeekOrigin.Begin);                        //设置流位置0
if ((long)Convert.ToInt32(BR.BaseStream.Length) != BR.BaseStream.Length)//是否超过int上限
{
    MessageBox.Show("内容超量", "提示", MessageBoxButtons.YesNoCancel);
}
byte[] bytesArr1 = BR.ReadBytes(Convert.ToInt32(BR.BaseStream.Length));//读取全部

版本号

使用程序生成时的时间戳作为版本号

string VersionNumber = "V1.2.1";
label1.Text = VersionNumber + "." + System.IO.File.GetLastWriteTime(this.GetType().Assembly.Location).ToString("yyyyMMdd");

遍历结构体

[StructLayout(LayoutKind.Sequential, Pack = 1)] // 按1字节对齐
public struct SS_AB  //结构体
{
    public int aaa;
    public float bbb;
};

public Form1()
{
    InitializeComponent();
    SS_AB ss = new SS_AB() { aaa = 1, bbb = 2 };
    FieldInfo[] fieldInfos = typeof(SS_AB).GetFields();
    for (int i = 0; i < fieldInfos.Length; i++)
    {
        FieldInfo FiledFirstLayer = fieldInfos[i];
        string Name= FiledFirstLayer.Name;
        object Value = FiledFirstLayer.GetValue(ss);
        Console.WriteLine(Name+":"+Value.ToString());
    }
}

//输出为:
aaa:1
bbb:2

Json序列化 

    //序列化对象
    AAA a1 = new AAA()
 
    //序列化
    string jsonstr = JsonConvert.SerializeObject(a1); 
    //反序列化
    AAA a2 = JsonConvert.DeserializeObject<AAA>(jsonstr);

创建数组副本 

float[] A = {1.1f,1.2f,1.3f,1.4f};

//被修改
float[] B = A;
B[0] = 666;
Console.WriteLine("d2---");
foreach (var item in A)
{
    Console.WriteLine(item);
}

//未修改
float[] C = A.Clone() as float[]; //创建副本!
C[0] = 1212;
Console.WriteLine("d3---");
foreach (var item in A)
{
    Console.WriteLine(item);
}

//效果
d2---
666
1.2
1.3
1.4
d3---
666
1.2
1.3
1.4

 

1 网上教学的发展趋势与现状 1 1.2 开发背景 2 1.3 网上答疑辅导系统开发的目的 2 1.4 网上答疑辅导系统开发的意义 2 1.5 本文研究的内容和目标 2 第2章 关键技术介绍 4 2.1 ASP.NET技术介绍 4 2.1.1 .NET简介 4 2.1.2 ASP.NET简介 4 2.2 SQL Server 2000 6 2.3 IIS 5.0 7 2.4 系统开发环境介绍 7 第3章 系统分析 8 3.1 可行性分析 8 3.1.1操作上的可行性 8 3.1.2技术上的可行性 8 3.1.3时机上的可行性 8 3.1.4管理上的可行性 8 3.2 需求分析 9 3.3 系统的业务流图 10 3.4 数据流程图 10 第4章 总体设计 14 4.1 系统设计 14 4.1.1 目标设计 14 4.1.2 设计思想 14 4.1.3 系统功能分析和设计 15 4.1.3.1 系统功能模块的详细介绍 15 4.1.3.2 系统的逻辑功能划分 16 4.2 数据库的实现 18 4.2.1 数据库的需求分析 18 4.2.2 数据库的概念结构设计 19 4.2.3 数据库的逻辑设计 21 4.2.4 数据库访问的设计 23 第5章 详细设计 25 5.1 主界面设计 25 5.1.1 母版页(MasterPage.aspx)的设计 25 5.1.2 主界面(main.aspx)的设计 25 5.2 登录界面的设计 26 5.3 在线答疑(聊天室)的设计 27 5.3.1 聊天登录 27 5.3.2 保存聊天信息 27 5.3.3 获取聊天信息 28 5.3.4 格式化显示聊天信息 29 5.3.5 设计聊天界面 29 5.3.6 实现聊天功能 29 5.4 留言答疑(留言板)的设计与实现 31 5.4.1 留言板页面设计 31 5.4.2 留言板功能的实现 33 5.5课件学习的设计与实现 34 5.6 上传下载模块的设计与实现 35 5.6.1 上传文件模块的设计与实现 35 5.6.2 下载文件模块的设计与实现 37 5.7公告信息的设计与实现 40 5.8系统后台管理的设计与实现 40 5.8.1 留言管理 41 5.8.2 课件管理 42 5.8.3 公告管理 42 5.8.4 用户管理 42
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值