.NET
由微软公司提供的免费、跨平台的开源通用开发平台,可用于开发许多不同类型的应用,如:Web,移动设备,PC桌面端等
C# (C Sharp)的特点
- 是一种现代的、简洁而类型安全的面向对象编程语言
- C#源于C 语言系列,采用与C、C++或Java一致的花括号({和})语法
- 能与.NET Framework完美结合
C# 的应用范围
- 控制台应用
- 桌面应用
- UWP应用
- Web应用开发:ASP.NET、Web服务等
- Windows Presentation Foundation(WPF)应用程序开发
- 跨平台:移动应用、智能手机应用开发
- Windows服务
……
.NET Framework
- C# 程序在 .NET Framework 上运行
- .NET Framework是一个开发和运行环境,可以使不同的编程语言(如C#、VB.net等)和运行库能够无缝地协同工作,简化开发和部署各种网络集成应用程序或独立应用程序
1.2 创建简单的C#程序
- 引用命名空间
- 定义命名空间
- 自定义类
- 定义静态Main方法
- 调用Console类的静态方法输出
//c:\CSharpBook\Chapter01\Hello.cs A "Hello World!" program
02 // compile:csc Hello.cs -> Hello.exe
03 using System;
04 namespace CSharpBook. Chapter01
05 {
06 class HelloWorld
07 {
08 static void Main()
09 {
10 Console.WriteLine(“Hello World!”);
11 }
12 }
13 }
结构和书写规则
类型的声明和使用
声明类的基本语法为:
[类修饰符] class 类名
{
类体
}[;]
声明字段和方法:
[字段修饰符] 类型 字段名
[方法修饰符] 返回值类型 方法名 ([形参列表])
{
方法体
}[;]
类名 对象名= new 类名 ([参数表]); //创建对象
对象名.属性 //访问对象属性
对象.方法名([实参列表])
类型的声明和使用
// compile:csc Point.cs -> Point.exe
using System;
namespace CSharpBook.Chapter01
{
public class Point //声明类Point
{
public int x, y; //声明字段x和y,表示坐标点(x,y)
public Point(int x, int y) //构造函数
{
this.x = x; this.y = y;
}
public double Distance(Point p)
{
//声明方法Distance,计算并返回该对象(坐标点)
//与对象p(另一坐标点)的距离
return Math.Sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
}
}
class PointTest
{
static void Main()
{
Point p1 = new Point(0, 4); //创建对象p1(坐标点1)
Point p2 = new Point(3, 0); //创建对象p2(坐标点2)
double dist = p1.Distance(p2); //调用对象p1的方法Distance
//访问p1的属性x和y
Console.WriteLine("点p1的坐标为:(" + p1.x + "," + p1.y + ")");
//访问p2的属性x和y
Console.WriteLine("点p2的坐标为:(" + p2.x + "," + p2.y + ")");
Console.WriteLine("两点之间的距离为:" + dist); Console.ReadKey();
}
}
}
命名空间
-
C#程序是利用命名空间组织起来的。为了有效地组织C#程序中的类型并保证其唯一性,C#引入了命名空间的概念,从而最大限度地避免类型重名错误。
-
命名空间是一种逻辑组合。C#程序中类型由指示逻辑层次结构的完全限定名(fully qualified name)描述。例如,CSharpBook. Chapter01. HelloWorld表示CSharpBook命名空间的子命名空间Chapter01中的HelloWorld类
-
声明格式如下:
-
namespace 命名空间名称
-
一个源程序文件中可以包含多个命名空间;同一命名空间可以在多个源程序文件中定义。命名空间可以嵌套。同一命名空间中不允许定义重名的类型
使用方法
-
访问命名空间:[.].类型
using 命名空间 可以非限定方式直接引用该命名空间中的类型 -
命名空间别名:using 别名 = 命名空间或类型名;
分别用“别名::类型”,“别名.方法”进行调用 -
全局命名空间:使用全局命名空间限定符global::
命名空间举例
// compile:csc AliasNSTest.cs -> AliasNSTest.exe
using AliasNS = System;
using AliasClass = System.Console;
namespace CSharpBook.Chapter01
{
class AliasNSTest
{
static void Main()
{
// AliasNS.Console.WriteLine("Hi 1"); // 错误!
AliasNS::Console.WriteLine("Hi 2"); // OK
// AliasClass::WriteLine("Hi 3"); // 错误!
AliasClass.WriteLine("Hi 4"); // OK
AliasClass.ReadKey();
}
}
}
// compile:csc GlobalNSTest.cs -> GlobalNSTest.exe
using System;
namespace CSharpBook.Chapter01
{
class GlobalNSTest
{
// 定义一个名为'System'的新类,为系统制造麻烦.
public class System {
}
// 定义一个名为'Console'的常量,为系统制造麻烦.
const int Console = 7;
const int number = 66;
static void Main()
{
// Console.WriteLine(number); // 出错:访问TestApp.Console
global::System.Console.WriteLine(number); //OK!访问正确的命名空间中的类型
global::System.Console.ReadKey();
}
}
}
注释
-
C#使用传统的C风格注释方式
单行注释使用“// … ”
多行注释使用“/* … /”
内联注释:多行注释放在一行代码中,该行中置于“/”和“*/”字符之间 -
XML文档注释
以3个斜杠(///)开头的单行注释
Main方法
- Main方法声明
- C#的可执行程序必须包含一个Main方法,用于控制程序的开始和结束
- C#中所有的Main方法都是静态的,使其不必依赖于类的实例对象而执行
- 如果有多个Main方法,可以使用/main选项,其后跟Main方法所属类的全名(包括命名空间),明确告诉编译器将哪个方法作为程序的入口点
命令行参数
Main方法的参数是表示命令行参数的String数组
通过测试args.Length属性来检查参数是否存在
args[0]表示第一个参数,args[1]表示第二个参数
Main返回值
Main方法可以是void类型,也可以返回整型值int。如不需Main返回值,可用void使代码变简洁
控制台输入和输出
-
System.Console类
表示控制台应用程序的标准输入流、输出流和错误流 -
格式化输出:
Console.WriteLine(复合格式字符串, 输出对象列表); -
System. Console类常用方法
例子
using System;
namespace CSharpBook.Chapter01
{
class ConsoleIO
{
static void Main(string[] args)
{
Console.Clear(); //清屏
Console.Write("请输入您的姓名:"); //提示输入
String s = Console.ReadLine(); //读取1行,以回车结束
Console.Beep(); //提示音
Console.WriteLine("欢迎您!" + s); //输出读取的内容
Console.Read(); //按回车键结束
}
}
}
格式化
//Console.WriteLine(“(C) Currency: {0:C}\n(E) Scientific:{1:E}\n”, -123, -123.45f);
using System;
namespace CSharpBook.Chapter01
{
class ComFormat
{
static void Main(string[] args)
{
Console.WriteLine("{0:C3}", 12345.6789); // 显示: ¥12,345.679
Console.WriteLine("{0:D8}", 12345); // 显示: 00012345
Console.WriteLine("{0:E10}", 12345.6789); // 显示: 1.2345678900E+004
Console.WriteLine("{0:F3}", -17843); // 显示: -17843.000
Console.WriteLine("{0:00000.000}", 123.45);// 显示: 00123.450
Console.WriteLine("{0:#####.###}", 123.45); // 显示: 123.45
DateTime date1 = new DateTime(2014, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("yyyy/MM/dd hh:mm:ss")); //显示: 2014/04/10 06:30:00
Console.ReadKey();
}
}
}
转载:https://blog.csdn.net/weixin_51422230/article/details/127681857