关于c#的研究

发布于:2022-11-28 ⋅ 阅读:(308) ⋅ 点赞:(0)

C#语言

  • c#【读作"see sharp"】一种基于.NET的完全面向对象的高级程序设计语言。
  • 开发工具首选Visual Studio
  • C#的版本更替
    在这里插入图片描述

Microsoft.NET框架

  • Microsoft.NET框架是生成、运行.NET应用程序和Web Service的组件库。由公共语言运行库(CLR)类库组成,其中类库为开发和运行.NET应用程序提供了各种支持,是与公共语言运行库紧密集成的可重的类的集合。

CLR

公共语言运行库【CLR Common Language Runtime】是.NET框架的基础,为多种编程语言提供统一的运行环境。

  • 关于公共语言运行库和类库的更多知识,可参看,本专栏的另外一篇文章.NET Framework的研究

.NET的特点:

一种框架、多种语言
- 支持C#、C++、VB、F#、……等20多种高级程序设计语言

  • 用基于.NET框架开发的应用程序,不论使用的是哪种高级语言,均必须在安装了.NET框架的计算机上才能运行。

中间语言(IL)

  • 使用.NET框架提供的编译器可直接将源程序编译为.EXE或者.DLL文件,此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言代码(IL)。
    • 优势:
      • 实现平台无关
      • 只要能将某种语言编译为IL代码,就可以实现这些语言之间的交互操作。

即时编译(JIT)

  • 执行时CLR会将需要的IL代码装入内存,通过JIT编译器(Just-In-Time)将其编译成所用平台的CPU可直接执行的机器代码。
  • 即时编译并不是一次把整个应用程序全部编译完,而是只编译它调用的那部分代码所在的模块。
  • 优势
    • 有效地提高系统的性能
    • 可利用现有CPU和GPU硬件提供的功能即时生成优化后的可执行代码。

c#项目的组织

  • Visual Studio开发工具用“解决方案(.sln)”和“项目”共同管理源程序文件和资源文件,一个解决方案中可包含1~n个项目。
  • C#源文件的扩展名为.cs
  • 一个C#源文件中一般只包含一个类【强烈建议始终这样做】
  • 调试环境下:项目编译后,生成的可执行文件默认保存在项目的bin\Debug文件夹下

基础的相关知识

命名空间

  • 命令空间是一种逻辑划分,而非物理上的存储分类。
  • 是对类的一种划分,类似于目录和文件的划分形式 。

方法调用

  • 静态方法调用
    • 格式:命名空间.命名空间….命名空间.类名.静态方法名(参数,…);
System.Console.WritleLine(”Hello World!);
  • 实例方法调用
    • 首先创建实例,然后通过实例名.方法名调用
System.Text.StringBuilder  b = new StringBuilder();	     
b.Append(“abcd”); 

using关键字

  1. 作为引用指令
using System.Windows.Forms;
  1. 作为别名指令
using WinForm = System.Windows.Form;
using WpfForm = System.WPF.Form;
  1. 作为语句(定义一个范围)
  • 程序执行到“}”时,就会自动释放font1对象,例如:字体、画笔、打开文件的类等…
using (var font1 = new Font("Arial", 10.0f);)
{ 
   //
}

Main方法

static void Main(string[] args)
        {
            /*第一个C#程序*/
            Console.WriteLine("Hello World!");
            Console.ReadKey();
        }
  • 注意事项
    • 一个应用程序只能有一个Main方法
    • Main方法必须声明为static
    • Main方法的返回类型只能是 void 或者 int。
      • 返回类型为int时,一般用于返回错误代码
    • Main方法可以放在任何一个类中。
      • 一般将Main方法放在Program

c#注释

  • 单行注释
    • 以“//”符号开始,任何位于“//”符号后的本行文字都视为注释。
  • 块注释
    • 以“/”开始,“/”结束。任何介于这对符号之间的文字块都视为注释。
  • XML注释
    • “///”符号是一种XML注释方式。
    • 在用户自定义的类型如类、接口、枚举等或者在其成员上方,或者命名空间的声明上方连续键入3个斜杠字符。
    • 可以在键入方法名和参数的过程中看到用XML注释的智能提示。
  • #region注释方式
    • #region是一条预处理指令,用于给程序段添加逻辑功能注释,让某一部分代码实现的逻辑功能看起来更清晰。
    • 被包围的代码还可以折叠和展开。

命名规范

  1. 类名、方法名、属性名全部使用Pascal命名法,即所有单词连写,每个单词的第一个字母大写,其他字母小写。
    • 例如:HelloWorld、GetData等。
  2. 变量名、对象名、方法的参数名全部使用Camel命名法,即所有单词连写,但是第一个单词全部小写,其他每个单词的第一个字母大写。
    • 例如:userName、userAge等。
  3. 如果是私有字段,为了和具有相同名字的属性名区分,私有的字段名也可以用下划线(“_”)开头。
    • 如:属性名为Age,私有字段名可以为age或者_Age。

控制台应用程序

普通的输入和输出

  • 控制台输出
    • 通过System.Console类提供的静态Write、WriteLine方法实现控制台输出。
    • Console.Write();
      • 把各种类型的数据或对象转换成字符串写入标准输出。
    • Console.WriteLine();
      • 与Write的区别:自动输出回车换行符(“\r\n”)。
  • 控制台输入
    • Console.ReadKey()
      • 从标准输入流读取用户按下的字符或功能键。
    var c = Console.ReadKey()
    • Console.ReadLine();
      • 从标准输入流读取一行字符。
    string s = Console.ReadLine();
    

输出格式化数据

  • Console.WriteLine(“格式化表示”, 参数序列);
  • Console.Write(“格式化表示”, 参数序列);
int x=10, y=20, z=30;
//输出10+20+30=60
Console.WriteLine("{0}+{1}+{2}={3}", x, y, z, x+y+z);  Console.WriteLine($"{0}+{y}+{z}={x+y+z}");  
//输出60=20+30+10
Console.WriteLine("{3}={1}+{2}+{0}", x, y, z, x+y+z);
Console.WriteLine($"{x+y+z}={y}+{z}+{x}");
  • 格式化字符串的一般表示形式
         {N [, M][: 格式码]}      
  • N:从零开始的整数,表示第几个参数。
  • M :可选,用整数表示最小长度。

若参数N的长度小于M,默认用空格填充;若大于,按实际数输出。

  • M为负左对齐,M为正右对齐;
    • 格式码:可选。
      • C—货币形式
      • D—十进制
      • F—固定精度
      • E—指数
      • N—用逗号分隔千位数字
      • P—百分比
      • X—十六进制

格式码也可以用占位符表示:0—强制占位符、#—有效占位符

  • 利用string.Format方法格式化字符串
    • 在控制台应用程序中,可以先用String.Format方法拼接字符串,再用WriteLine方法输出;
    • 该方法可于各种类型的应用程序(桌面、Web、移动)。
int i = 123;
string s1 = string.Format("{0:d6}", i); 
string s2 = $"{i:d6} "
//结果:s1=000123,s2=000123
Console.WriteLine("s1="+s1+",s2="+s2);
  • 利用ToString方法格式化字符串
    • 如果是一个变量,使用ToString方法可能更简单,该方法同样适用于各种类型的应用程序。
int n1 = 12;
string s1 = n1.ToString("X4"); //X:十六进制。结果:000C
string s2 = n1.ToString("d5"); //结果:00012  

快速键入c#代码

  • 方法1:连续按两次键
  • 方法2:在要插入代码段的位置处,鼠标右击选择“外侧代码”,然后选择要插入的代码段。

快速调整代码格式

  • 删除再键入最后一个大括号
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到