using System;
namespace 特殊语法
{
class Person
{
public string Name { get; set; }
public bool Sex { get; set; }
public void Speak ()
{
Console.WriteLine ("name:" + Name + " sex:" + (Sex? "男": "女"));
}
}
class Program
{
static void Main (string[] args)
{
// 1。设置对象初始值---------------------------------------------------
// 声明对象时,可以通过以下形式初始化public的成员属性和字段
// 有无参构造函数时,括号可写可不写
Person p = new Person () { Name = "li", Sex = true };
p.Speak ();
// name:li sex:男
// 匿名类.不能有函数
var anonymous = new
{
age = 10, name = "li",
// fun = () =>
// {
// Console.WriteLine ("fun");
// }无法将“lambda 表达式”分配给匿名类型属性
};
// anonymous.fun ();
// 不可调用的成员“<anonymous type: int age, string name, error fun>.fun”不能像方法一样使用。
// 2。可空类型---------------------------------------------------
// 默认值类型是不能为null的。声明时在类型后+?可以赋值null
int? i = null;
//判断是否有值
if (i.HasValue)
{
Console.WriteLine (i);
// Console.WriteLine (i.Value);
}
// 判断引用类型是否为空,并在不为空的情况下调用函数
Person person = null;
// if (person != null) person.Speak ();等效于下面的写法
person?.Speak ();
// 容器中用索引访问元素也有同样的用法
int[] nullIntArr = null;
Console.WriteLine (nullIntArr?[0]); //不会报错
// 委托调用同样
Action action = null;
action?.Invoke ();
// 3。空合并操作符---------------------------------------------------
// 语法:左边的值 ?? 右边的值
// 作用:如果左边值为null则返回右边的值,否则返回左边的值
Person p1 = person ?? p;
p1.Speak ();
}
}
}
c#学习笔记 特殊语法
最新推荐文章于 2025-03-20 20:45:15 发布
本文是C#学习笔记,重点探讨C#中的特殊语法特性,包括但不限于委托、事件、属性、索引器、运算符重载等。通过实例解析,帮助读者深入理解这些语法的应用场景和实现方式。

306

被折叠的 条评论
为什么被折叠?



