C#【进阶】特殊语法

特殊语法、值和引用类型

特殊语法

在这里插入图片描述

1、var隐式类型

var是一种特殊的变量类型
它可以用来表示任意类型的变量
注意:
	1、var不能作为类的成员,只是临时声明
	2、var必须初始化

2、设置对象初始值

声明对象时
可以通过直接写大括号的形式初始化公共成员变量和属性
作用:可以快速初始化
    小括号可以省略

3、设置集合初始值

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

4、匿名类型

var可以声明为自定义的匿名类型
    var v = new { age = 18, money = 100};

5、可空类型

1、值类型是不能为空的
    int c = 3;
2、声明时,在值后面加?
    int? c = null;
3、判断是否为空
    if (c.HasValue)
    {
        Console.WriteLine(c);
        Console.WriteLine(c.Value);
    }
4、安全获取可空类型值
    int? value = null;
    4-1、如果为空,默认返回值类型的默认值
        Console.WriteLine(value.GetValueOrDefault());
    4-2、指定一个默认值
        Console.WriteLine(value.GetValueOrDefault(-1));

	4-3?会自动判断是否为空
        object o = null;
        if (o!=null)
        {
            o.ToString();
        }
		//?相当于语法糖
        o?.ToString();
		//数组判断非空简写
		int[] arrayInt = null;
		arrayInt?[0];
		//委托判断非空简写
		Action action = null;
		action?.Invoke;

6、空合并操作符

空合并操作符 ??
左边值 ?? 右边值
如果左边值为null 就返回右边值,否则返回左边值
只要是可以为null的类型都能用
    int? intV = null;
	//int intI = intV == null ? 100 : intV.Value;
	int intI = intV ?? 100;

	string str = null;
    str = str ?? "空";
	Console.WriteLine(str);

7、内插字符串

用$来构造字符串,让字符串可以拼接变量
int age = 18;
Console.WriteLine($"年龄{age}岁");

8、单句逻辑简略写法

当循环或者if语句只有一句代码时,大括号可以省略
方法只有一句代码时可以直接 =>

值和引用类型

1、判断值和引用类型

F12查看
class 是引用
struct 是值

2、语句块

命名空间
   ↓
类、接口、结构体
   ↓
函数、属性、索引器、运算符重载等(类、接口、结构体)
   ↓
条件分支、循环

上层语句块:类、结构体
中层语句块:函数
底层的语句块: 条件分支 循环等

我们的逻辑代码写在哪里?
函数、条件分支、循环-中底层语句块中

我们的变量可以申明在哪里?
上、中、底都能申明变量
上层语句块中:成员变量
中、底层语句块中:临时变量

3、变量的生命周期

编程时大部分都是 临时变量
在中底层申明的临时变量(函数、条件分支、循环语句块等)
语句块执行结束 
没有被记录的对象将被回收或变成垃圾

值类型:被系统自动回收
引用类型:栈上用于存地址的房间被系统自动回收,堆中具体内容变成垃圾,待下次GC回收

4、结构体中的值和引用

结构体本身是值类型
前提:该结构体没有做为其它类的成员
在结构体中的值,栈中存储值具体的内容
在结构体中的引用,堆中存储引用具体的内容

引用类型始终存储在堆中

5、类中的值和引用

类本身是引用类型
在类中的值,堆中存储具体的值
在类中的引用,堆中存储具体的值

6、数组中的存储规则

数组本身是引用类型
值类型数组,堆中房间存具体内容
引用类型数组,堆中房间存地址

7、结构体继承接口

利用里氏替换原则,用接口容器装载结构体存在装箱拆箱
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一些 C#语法: 1. 变量和数据类型 C# 支持多种数据类型,包括整型、浮点型、布尔型、字符型、字符串型、数组和枚举等。声明变量时需要指定数据类型,如: ``` int i = 10; float f = 3.14f; bool b = true; char c = 'a'; string s = "hello"; int[] arr = {1, 2, 3}; ``` 2. 控制结构 C# 支持 if-else、switch-case、while、do-while、for、foreach 等控制结构,用于控制程序的流程与逻辑。 3. 方法 方法是 C# 中的一个重要概念,用于封装可重复使用的代码。方法可以有参数和返回值,声明方式如下: ``` public int Add(int a, int b) { return a + b; } ``` 4. 类和对象 C# 是一种面向对象的编程语言,支持类和对象的概念。类是一个模板,用于定义对象的属性和方法,对象是类的一个实例。声明一个类的方式如下: ``` public class Person { public string Name { get; set; } public int Age { get; set; } public void SayHello() { Console.WriteLine("Hello, my name is " + Name); } } ``` 创建对象的方式如下: ``` Person p = new Person(); p.Name = "Tom"; p.Age = 18; p.SayHello(); ``` 5. 接口和抽象类 C# 支持接口和抽象类的概念,用于实现多态。接口定义了一组方法和属性,实现接口的类必须实现接口中的所有方法和属性。抽象类是一个不能被实例化的类,用于定义一些通用的方法和属性,子类可以继承抽象类并实现其中的抽象方法。 以上是一些 C# 的基本语法,还有许多高级特性和语法需要学习和掌握。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值