[C#复习向整合]特殊语法

一.var隐式类型

var是一种特殊变量类型,可以表示任何类型变量.

var只能用于临时变量的声明,不能作为类成员.也就是一般写在函数语句块中.

var必须初始化.

static void Main(string[] args)
{
    var i = 5;
    var s = "str";
    var list = new List<int>();
}

可以用于不确定类型变量.

二.设置对象初始值

声明对象时,可以通过直接写大括号的形式初始化公共成员变量和属性.

class Person
{
    private int money;
    public bool sex;

    public string Name
    {
        get;
        set;
    }
    public int Age
    {
        get;
        set;
    }
}
class Program
{
    static void Main(string[] args)
    {
        //可以通过大括号,在声明对象时直接初始化公共的
        //小括号可写可不写
        //还是会调用构造函数的,先执行构造函数,再执行大括号赋值
        Person p = new Person() { sex = true, Age = 10, Name = "C#" };
        Person p2 = new Person { Age = 18 };
    }
}

三.设置集合的初始值

声明集合对象时,也可以通过大括号,直接初始化内部属性.

class Person
{
    private int money;
    public bool sex;
    public string Name
    {
        get;
        set;
    }
    public int Age
    {
        get;
        set;
    }
}
class Program
{
    static void Main(string[] args)
    {
        int[] array = new int[] { 1,2,3,4,5 };
        List<Person> persons = new List<Person>()
        {
            new Person(){ sex = false},
            new Person() {Age = 20}
        };
        Dictionary<int, string> dic = new Dictionary<int, string>()
        {
            { 1, "123" },
            { 3, "hello" }
        };
    }
}

四.匿名类型

var变量可以声明为自定义的匿名类型.

static void Main(string[] args)
{
    //类似于临时定义的一个类
    //只能有变量,不能有函数
    var v = new { age = 10, name = "小明" };
    Console.WriteLine(v.name);
}

五.可空类型

值类型通常不能赋值为空.

//错误!
//int c = null;

但在声明时,在值类型后面加?,则可以赋为空

//不报错
int? c = null;

使用前先判断是否为空

 int? c = null;
 if(c.HasValue)
 {
     //若c不为空
     Console.WriteLine(c);
     Console.WriteLine(c.Value);//与上面那行一样
 }

安全获取可空值的方法

int? c = null;
//参数可有可无
Console.WriteLine(c.GetValueOrDefault());//若空则返回类型默认值
Console.WriteLine(c.GetValueOrDefault(100));//若空则返回100
//但实际上GetValueOrDefault函数并不会改变变量的值!并没有给变量赋值.
//再次输出c的value也并不会变成100!

对于引用类型

 object o = null;
 //o.ToString();//单独执行这一句会报错1
 o?.ToString();
 //等价于
 //if(o!=null)
 //{
 //    o.ToString();
 //}    
int[] array = null;
//Console.WriteLine(array[0]);//报错!
Console.WriteLine(array?[0]);
//等价于
//if(array != null)
//{
//    Console.WriteLine(array[0]);
//}
 Action action = null;
 //action();//报错!
 //action.Invoke();//爆粗
 action?.Invoke();
 //等价于
 //if(action!=null)
 //{
 //    action();
 //}

六.空合并操作符

左边值 ?? 右边值

如果左边值为null,就返回右边值,否则返回左边值.

只要是可以为null的类型都能用.

int? v = null;

int i = v == null ? 100 : v.Value;//v.Value才是具体的int值
//等价于
i = v ?? 100;
//等价于
if(v.HasValue)
{
    i = v.Value;
}
else
{
    i = 100;
}

七.内插字符串

关键符号 $

用$来构造字符串,让字符串中可以拼接变量

string i = "sss";
Console.WriteLine($"hello,{i}");
//等价于
Console.WriteLine("hello,{0}", i);

八.单据逻辑的简略写法

//if单句省略大括号
if (true)
    Console.WriteLine("123");
//while单句省略大括号
while(true)
    Console.WriteLine("123");
//for单句省略大括号
for (int i = 0; i < 10; i++)
    Console.WriteLine("123");
private string name;
//public string Name
//{
//    get
//    {
//        return "sss";
//    }
//    set
//    {
//        name = value;
//    }
//}
//若只有一行,可简写为
public string Name
{
    get => "sss";
    set => name = value;
}
 //public int Add(int x, int y)
 //{
 //    return x + y;
 //}
 //若只有一句,可简写
 public int Add(int x, int y) => x + y;

资料来源<唐老狮C#教程>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值