C#语法基础

作者:@kuaiquxie
作者的github:https://github.com/bitebita
本文为作者原创,如需转载,请注明出处:https://www.cnblogs.com/dzwj/p/16385374.html


CS基础

输入输出:

static inputStr = null; inputStr = console.readline(); string outputStr = "Hi," + inputStr; console.writeline(outputStr);

 

类型转换:

显式类型转换:低精度<-高精度 float valFloat = (float)valDouble; 隐式类型转换: double valDouble = valFloat;

数值型和 string 互转: string valStr = "5"; //字符串转整型 int valInt = int.Parse(valStr); //整型转字符串 string valStr = valLong.ToString();

 

自增自减:i++ ++i

i++; //int r=i; i =i+1; return r; ++i; //i = i+1; return i;

 

字符串格式化:

int result = 3; string inputStr = "val"; string str1 = inputStr + "的值是:" + result; string str2 = $"{inputStr}的值是:{result}"; str1 == str2;

public void SetAge(int value) { this.age = value; } 相当于 public static void SetAge(Human _this,int value) { _this,age = value; }

 

Partial是局部类型的意思

允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 C#编译器在编译的时候仍会将各个部分的局部类型合并成一个完整的类 Partial关键词定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理。 https://www.cnblogs.com/bincoding/p/7337257.html

 

值类型和引用类型的区别:

结构体是值类型,Class是引用类型 在函数调用内部指令中, *struct直接在栈中进行内存分配,class是在堆中进行内存分配; *栈中的内存:在函数调用完成后回收,堆中的内存:由c#运行时自动回收(GC) *在函数调用过程中,class拷贝只是拷贝地址,struct是所有数据都拷贝(深拷贝) *如果需要将struct的引用传递给函数内部,则需要使用关键字ref

新分配 class 对象,存储的是一个地址,由地址->值(内存) 结构体是直接分配 值(内存) 见doc文档

查看官方文档: 在 栈 中分配的有: 简单类型:int float struct 在 堆 中分配的有: 引用类型:类类型 接口类型 数组类型 委托类型(类似指针)

 

其他

C# 继承 见doc文档

可以自行查看 微软 C# 介绍

C# 泛型 见doc文档 C# 容器 见doc文档

C# 函数指针 见doc文档

C# 反射 见doc文档

C# 宏 见doc文档

C# 异常 见doc文档

C# 操作符重载 见doc文档

 

 

CS WinForm

 

字符串转整数:

convert.ToInt32(); int.parse();

 

动静态方法区别:

动态方法:需要实例化

不在你的内存占用空间,因为他会随时释放

静态方法:不需要实例化

比较浪费内存空间,在编译的时候会将这些方法存到内存中

在开发的时候呢,尽量将软件使用的内存降低

 

加密

单向加密: ASCII码加密 MD5加密 等等(下载 密码学工具箱 查看)

对称加密: base64加密

ASCII单向加密

按钮实现 Form1.cs 源代码文件

private void button1_Click(object sender, EventArgs e)
{
   //读取用户名文本内容
   string namestr = keyname.Text;
   //将字符串转为 ASCII码 加密字符串
   byte[] namebyte = Encoding.ASCII.GetBytes(namestr);      
   //定义一个空的字符串
   string text1 = string.Empty;
   //1.将ASCII码转为 字符串
   //for (int i = 0; i < namebyte.Length; i++)
   //{
   //转为字符串
   //ToString 参数X 转换为十六进制 参数2 将ASCII码对应的数,用两位表示
   // text1 += namebyte[i].ToString("X2");
   //}
   //2.将ASCII码转为 十六进制 字符串
   foreach(byte zijie in namebyte)
  {
       text1 += zijie.ToString("X2");
  }  
   keya.Text = text1;

   //字符串替换 加密注册码
   string text2 = text1.Replace("0", "O");
   text2 = text1.Replace("1", "E");
   text2 = text1.Replace("6", "P");
   text2 = text1.Replace("3", "L");
   keyb.Text = text2;

   //字符串分拣 加密注册码
   string text3 = string.Empty;
   for(int n = 1; n < text2.Length; n += 2)
  {
       text3 += text2[n].ToString();
  }
   keyc.Text = text3;

   //字符串翻转 加密注册码
   //1.定义空字符串
   string text4 = string.Empty;
   //2.将字符串转换为 字符数组
   char[] chars = text3.ToCharArray();
   //3.字符数组 翻转
   Array.Reverse(chars);
   //4.字符数组 转 字符串
   text4 = new string(chars);

   /*
        * //遍历 ASCII数组
       foreach(byte i in namebyte)
       {
           text4 = i.ToString("X2") + text4;
       }
        */
   keyd.Text = text4;

   //截取指定长度
   //1.
   string text5 = string.Empty;
   //2.字符串转整型
   //int num = int.Parse(num1.Text);
   //3.Substring 参数 从第2位开始取4位,位数超过输入的位数,报错
   text5 = text4.Substring(2, 4);
   //4.输出到外观界面
   keye.Text = text5;
}

 

 
posted @   kuaiquxie  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示