CSharp语法

CSharp10

结构记录类型

PersonNewStruct personNewStruct = new PersonNewStruct()
{
    Age = 36,
    Name = "ADMIN",
    Gender = Gender.Male,
};
public record struct PersonNewStruct(string Name, int Age, Gender Gender);
personNewStruct.Age = 40;//结构体的记录属性可以修改

无参数结构构造函数

//1:结构的初始化,某人调用无参构造函数
PersonInfo01 person = new PersonInfo01();
record struct PersonInfo01()
{
	public object Id { get; init; } = 123;
	public object Name { get; init; } = "admin";  
}

//2:结构的初始化,没有显示构造,实例初始化属性为空
PersonInfo02 person2 = new PersonInfo02("admin");
record struct PersonInfo02(string name)
{
	public object Id { get; init; } = 123;
	public object Name { get; init; } = name;
}

//3:存在有参和无参构造函数,才能够初始化结构记录实例
PersonInfo03 personInfo03 = new PersonInfo03();
PersonInfo03 personInfoNew = new PersonInfo03("admin");
record struct PersonInfo03
{
	//构造函数必须使用public修饰
	public PersonInfo03()
	{
	   
	}

	//构造函数必须使用public修饰
	public PersonInfo03(string name)
	{
		Name = name;
	}

	public object? Id { get; init; } = 123;
	public object? Name { get; init; } = "lucy";
}

using全局使用

//其他地方不需要引入
global using System.Reflection;

扩展属性模式

object obj = new UserInfo
{
	UserId = 123,
	UserName = "admin",
	Age = 36,
	Address = new Address()
	{
		City = "WuHan"
	}
};
if (obj is UserInfo { Address: { City: "WuHan" } })
{
    Console.WriteLine("WuHan");
}
if (obj is UserInfo { Address.City: "WuHan" }) // Extended property pattern
{
	Console.WriteLine("WuHan");
}

lambda特性标志

public class TestAttribute : Attribute
{
	public void Show()
	{
		Console.WriteLine($"{this.GetType().FullName} 被构造~~");
	}
}

Action<int> action = [TestAttribute](int a) => { };

Action<int> action = [TestAttribute] (int a) => { };
var method = action.GetMethodInfo();
var attribute = method.GetCustomAttribute<TestAttribute>();
attribute!.Show();

//Lambda标记特性修饰返回值
{
	var f3 = [return: TestAttribute] (int x) => x;    
	ICustomAttributeProvider provider = f3.GetMethodInfo().ReturnTypeCustomAttributes;
	object[] attributeArray = provider.GetCustomAttributes(typeof(TestAttribute), true);
	foreach (TestAttribute attribute in attributeArray)
	{
		attribute.Show();
	}
}

//Lambda标记特性修饰参数
{
	var f4 = ([TestAttribute] int x) => x;            // [A] x 
	ParameterInfo[] prarArray = f4.GetMethodInfo().GetParameters();
	foreach (var para in prarArray)
	{
		TestAttribute attribute = para.GetCustomAttribute<TestAttribute>();
		attribute.Show();
	}
}

常数内插字符串

const string Language = "C#";
const string Platform = ".NET";
const string Version = "10.0";
const string FullProductName = $"{Platform} - Language: {Language} Version: {Version}";
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值