C# 中的类型推断
介绍
C# 是一种强类型语言,其默认类型声明是显式的。这意味着我们必须为新变量指定类型,否则编译器将抛出错误。在 C# 版本 3 中,引入了一个新关键字var,允许开发人员以隐式方式存储任何类型的值。这意味着编译器在编译时(第一次赋值时)决定该变量的类型。这可以轻松地与 LINQ 集成。
变量
在引入类型推断之前,我们必须在编译之前明确定义什么是字符串、整数或任何其他类型。
string guides = "Pluralsight Rocks!";
int number = 33;
经过这次声明之后,我们就不能再做这样的事情了。
guides = 33;
number = "Thirty three!"
编译器会让我们知道它无法在这些类型之间进行转换。
如果我们不想事先决定类型,我们可以使用以下表达式。
var guides;
var number;
然后稍后在应用程序中,我们可以分配所需的值。
guides = 22;
number = "C# is cool!"
但是如果我们想分配与第一次出现时分配的类型不同的变量,我们仍然会收到错误。例如:
guides = 22;
guides = "This is not going to work."
这将失败,因为编译器无法在这些类型之间隐式转换。
LINQ
LINQ 代表语言集成查询,这是一组基于将查询功能直接集成到 C# 语言中的技术。它们与 SQL 查询非常相似,目标是根据特定条件过滤数据。LINQ 支持大多数数据类型,包括 XML、SQL 等。有关完整详细信息,请访问官方文档。
在下面的例子中,我们将创建一个Servers类,该类具有一组属性,包括Name、OS、CPU、RAM和Price。使用LINQ,我们将能够根据这些属性过滤服务器。
using System;
using System.Collections.Generic;
using System.Linq;
namespace Pluralsight
{
public class Servers
{
public string Name { get; set; }
public string OS { get; set; }
public Int16 CPU { get; set; }
public Int16 RAM { get; set; }
public double Price { get; set; }
public static void Main()
{
List<Servers> serversList = new List<Servers>{
new Servers(){ Name="Small", OS="Windows 10", CPU=2, RAM=2, Price=10 },
new Servers(){ Name="Small-Medium", OS="Windows 10", CPU=2, RAM=3, Price=12 },
new Servers(){ Name="Medium", OS="Windows 2016", CPU=8, RAM=16, Price=15 },
new Servers(){ Name="Medium-Big", OS="Windows 2016", CPU=8, RAM=20, Price=18 },
new Servers(){ Name="Big", OS="Windows 2019", CPU=16, RAM=32, Price=25 }
};
var serverQuery = from server in serversList
where server.Price <= 18
select new { server.Name, server.OS, server.CPU, server.RAM, server.Price };
foreach (var server in serverQuery)
{
Console.WriteLine("Name={0}, OS={1}", server.Name, server.OS);
}
Console.ReadKey();
}
}
}
产生的输出如下。
Name=Small, OS=Windows 10
Name=Small-Medium, OS=Windows 10
Name=Medium, OS=Windows 2016
Name=Medium-Big, OS=Windows 2016
让我们分析这个例子来了解类型推断和 LINQ 是如何结合在一起的。
我们正在使用两个额外的命名空间。一个是System.Collections.Generic,另一个是System.Linq 。第一个为我们提供了存储服务器的List数据结构的实现。第二个为我们的应用程序添加了LINQ功能。在使用服务器初始化列表后,奇迹发生了。
var serverQuery = from server in serversList
where server.Price <= 18
select new { server.Name, server.OS, server.CPU, server.RAM, server.Price };
首先,我们定义变量来保存查询结果,然后查询寻找价格低于 19 的服务器。var关键字允许我们在运行时决定变量的类型,基本上分离要查找的项目类型和我们存储在serversList中的实际内容。
处理结果也是在var关键字的帮助下进行的。
foreach (var server in serverQuery)
{
Console.WriteLine("Name={0}, OS={1}", server.Name, server.OS);
}
结论
在本指南中,我们学习了如何使用 C# 的两个有用功能。var关键字可帮助我们编写更简洁、更易于维护的代码,而LINQ 可帮助我们以更优雅的方式过滤数据。我希望本指南对您有所帮助,并感谢您阅读它。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~