C#基础,初学者必看

C#语言介绍

C#适用于.NET(免费的跨平台开源开发环境)的语言,上手快,性能优。

与java相比,SDK=>.NET Java=>C#

C#能干什么?

  • 开发Windows软件,简称Winform应用程序
  • Internet应用程序,简称ASP.NET应用程序
  • 手机应用程序,微软系统的

.NET两种交互模式

C/S:客户端与服务器,客户端需要安装专门的客户端软件,如QQ、微信

B/S:浏览器与服务器,客户机上只要安装一个浏览器,如网页版7K7K、4399小游戏

简单的HelloWorld

// This line prints "Hello, World" 
Console.WriteLine("Hello, World");

独特的C#功能

数据查询

var honorRoll = from student in Students
                where student.GPA > 3.5
                select student;

上面的查询适用于 Students 表示的许多存储类型。 它可以是对象的集合、数据库表、云存储 Blob 或 XML 结构。 相同的查询语法适用于所有存储类型。

异步编程

public static async Task<int> GetPageLengthAsync(string endpoint)
{
    var client = new HttpClient();
    var uri = new Uri(endpoint);
    byte[] content = await client.GetByteArrayAsync(uri);
    return content.Length;
}

同步语句迭代

public static async IAsyncEnumerable<int> ReadSequence()
{
	int index = 0;
	while(index<100)
	{
		int[] nextChunk = await GetNextChunk(index);
		if(nextChunk.Length == 0)
		{
			yield break;
		}
		foreach(var item in nextChunk)
		{
			yield return item;
		}
		index++;
	}
}
await foreach (var number in ReadSequence())
{
	Console.WriteLine(number);
}

如果某个操作可能会需要进行IO、网络请求、数据库查询或任何其他可能阻塞线程的操作时,使用await关键字,就可以使得线程在等待此操作时挂起,不占用CPU资源,在操作执行完毕之后再继续执行程序。

模式匹配

public static bool Or(bool left,bool right) = >  // = > left || right
    (left, right)switch
{
        (true,true) = > true;
        (true,false) = > true;
        (false,true) = > true;
        (false,false) = > false;
};
// And Xor类似

java 开发者的学习路线

C# 和 Java 有许多相似之处。 学习 C# 时,可以应用许多已经掌握的 Java 编程知识:

  1. 类似的语法:Java 和 C# 都属于 C 语言系列。 这种相似性意味着你已经可以阅读并理解 C#。 虽然存在一些差异,但大部分语法与 Java 和 C 相同。大括号和分号的用法类似。 ifelseswitch 等控制语句相同。 循环语句 forwhiledowhile 相同。 在两种语言中,classinterface 的关键字相同。 访问修饰符(包括 publicprivate)相同。 甚至许多内置类型都使用相同的关键字:intstringdouble
  2. 面向对象的范例:Java 和 C# 都是面向对象的语言。 多形性、抽象和封装的概念在这两种语言中都适用。 两种语言都添加了新构造,但核心功能仍然相关。
  3. 强类型化:Java 和 C# 都是强类型化语言。 可以显式或隐式声明变量的数据类型。 编译器会强制执行类型安全性。 在运行代码之前,编译器会捕获代码中与类型相关的错误。
  4. 跨平台:Java 和 C# 都是跨平台语言。 你可以在喜欢的平台上运行开发工具。 应用程序可以在多个平台上运行。 开发平台不需要与目标平台匹配。
  5. 异常处理:Java 和 C# 都通过引发异常来指示错误。 两者都使用 try - catch - finally 块来处理异常。 异常类具有类似的名称和继承层次结构。 一个区别是,C# 没有“已检查的异常”的概念。 任何方法(在理论上)都可能会引发任何异常。
  6. 标准库:.NET 运行时和 Java 标准库 (JSL) 支持常见任务。 两者都有适用于其他开源包的广泛生态系统。 在 C# 中,包管理器是 NuGet。 它类似于 Maven。
  7. 垃圾回收:这两种语言都通过垃圾回收来应用自动内存管理功能。 运行时从未引用的对象中回收内存。 一个区别在于,C# 支持创建值类型,就像 struct 类型一样。

Java 中没有的 C# 功能和习惯用法:

  1. 模式匹配:模式匹配可以根据复杂数据结构的形状提供简洁的条件语句和表达式。 is 语句检查变量“是否”为某种模式。 基于模式的 switch 表达式提供了丰富的语法来检查变量并根据其特征做出决策。
  2. 字符串插值原始字符串字面量:字符串插值使你能够在字符串中插入已评估的表达式,而不是使用位置标识符。 原始字符串字面量可用于最小化文本中的转义序列。
  3. 可以为 null 的类型和不可为 null 的类型:C# 通过向类型附加 ? 后缀来支持可以为 null 的值类型可以为 null 的引用类型。 对于可以为 null 的类型,如果在取消引用表达式之前不检查是否有 null,编译器会发出警告。 对于不可为 null 的类型,如果向该变量分配 null 值,编译器会发出警告。 不可为 null 的引用类型可最大程度减少引发 System.NullReferenceException 的编程错误。
  4. 扩展方法:在 C# 中,可以创建扩展类或接口的方法。 扩展方法可扩展库中某个类型的行为或实现给定接口的所有类型的行为。
  5. LINQ:语言集成查询 (LINQ) 提供了一种通用语法来查询和转换数据,无论其存储方式如何。
  6. 本地函数:在 C# 中,可以在方法或其他本地函数内嵌套函数。 本地函数提供另一层封装。

C# 中还有一些 Java 中没有的功能。 你可看到 asyncawait 等功能,以及用于自动释放非内存资源的 using 语句。

C# 和 Java 之间还有一些类似的功能存在细微但重要的差异:

  1. 属性索引器:属性和索引器(将类视为数组或字典)都具有语言支持。 在 Java 中,它们是以 getset 开头的方法命名约定。
  2. 记录:在 C# 中,记录可以是 class(引用)类型,也可以是 struct(值)类型。 C# 记录可以是不可变的,但并非必须是不可变的。
  3. 元组在 C# 和 Java 中具有不同的语法。
  4. 属性类似于 Java 注释。

最后,有一些 Java 语言功能在 C# 中不可用:

  1. 已检查的异常:在 C# 中,理论上任何方法都可能引发任何异常。
  2. 已检查的数组协变:在 C# 中,数组不是安全协变的。 如果需要协变结构,则应使用泛型集合类和接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值