自学内容网 自学内容网

windows C#-默认约定(中)

&& 和 || 运算符

在执行比较时,使用 && 而不是 &,使用 || 而不是 |,如以下示例所示。

Console.Write("Enter a dividend: ");
int dividend = Convert.ToInt32(Console.ReadLine());

Console.Write("Enter a divisor: ");
int divisor = Convert.ToInt32(Console.ReadLine());

if ((divisor != 0) && (dividend / divisor) is var result)
{
    Console.WriteLine("Quotient: {0}", result);
}
else
{
    Console.WriteLine("Attempted division by 0 ends up here.");
}

如果除数为 0,则 if 语句中的第二个子句将导致运行时错误。 但是,当第一个表达式为 false 时,&& 运算符将发生短路。 也就是说,它并不评估第二个表达式。 如果 divisor 为 0,则 & 运算符将同时计算这两个表达式,从而导致运行时错误。

new 运算符

使用对象实例化的简洁形式之一,如以下声明中所示。

var firstExample = new ExampleClass();

ExampleClass instance2 = new();

前面的声明等效于下面的声明。

ExampleClass secondExample = new ExampleClass();

ExampleClass secondExample = new ExampleClass();

var thirdExample = new ExampleClass { Name = "Desktop", ID = 37414,
    Location = "Redmond", Age = 2.3 };

下面的示例设置了与前面的示例相同的属性,但未使用初始值设定项。

var fourthExample = new ExampleClass();
fourthExample.Name = "Desktop";
fourthExample.ID = 37414;
fourthExample.Location = "Redmond";
fourthExample.Age = 2.3;

事件处理

使用 lambda 表达式定义稍后无需移除的事件处理程序:

public Form2()
{
    this.Click += (s, e) =>
        {
            MessageBox.Show(
                ((MouseEventArgs)e).Location.ToString());
        };
}

Lambda 表达式缩短了以下传统定义。

public Form1()
{
    this.Click += new EventHandler(Form1_Click);
}

void Form1_Click(object? sender, EventArgs e)
{
    MessageBox.Show(((MouseEventArgs)e).Location.ToString());
}

静态成员

使用类名调用 static 成员:ClassName.StaticMember。 这种做法通过明确静态访问使代码更易于阅读。 请勿使用派生类的名称来限定基类中定义的静态成员。 编译该代码时,代码可读性具有误导性,如果向派生类添加具有相同名称的静态成员,代码可能会被破坏。

LINQ 查询

对查询变量使用有意义的名称。 下面的示例为位于西雅图的客户使用 seattleCustomers。

var seattleCustomers = from customer in customers
                       where customer.City == "Seattle"
                       select customer.Name;

使用别名确保匿名类型的属性名称都使用 Pascal 大小写格式正确大写。

var localDistributors =
    from customer in customers
    join distributor in distributors on customer.City equals distributor.City
    select new { Customer = customer, Distributor = distributor };

如果结果中的属性名称模棱两可,请对属性重命名。 例如,如果你的查询返回客户名称和分销商 ID,而不是在结果中将它们保留为 Name 和 ID,请对它们进行重命名以明确 Name 是客户的名称,ID 是分销商的 ID。

var localDistributors2 =
    from customer in customers
    join distributor in distributors on customer.City equals distributor.City
    select new { CustomerName = customer.Name, DistributorID = distributor.ID };

在查询变量和范围变量的声明中使用隐式类型化。 有关 LINQ 查询中隐式类型的本指导会替代适用于隐式类型本地变量的一般规则。 LINQ 查询通常使用创建匿名类型的投影。 其他查询表达式使用嵌套泛型类型创建结果。 隐式类型变量通常更具可读性。

var seattleCustomers = from customer in customers
                       where customer.City == "Seattle"
                       select customer.Name;

对齐 from 子句下的查询子句,如上面的示例所示。

在其他查询子句前面使用 where 子句,确保后面的查询子句作用于经过缩减和筛选的一组数据。

var seattleCustomers2 = from customer in customers
                        where customer.City == "Seattle"
                        orderby customer.Name
                        select customer;

使用多行 from 子句代替 join 子句来访问内部集合。 例如,Student 对象的集合可能包含测验分数的集合。 当执行以下查询时,它返回高于 90 的分数,并返回得到该分数的学生的姓氏。

var scoreQuery = from student in students
                 from score in student.Scores!
                 where score > 90
                 select new { Last = student.LastName, score };

 


原文地址:https://blog.csdn.net/m0_72813396/article/details/143457399

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!