首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从C# 8 switch表达式返回到一个属性和两个本地声明的变量?

从C# 8 switch表达式返回到一个属性和两个本地声明的变量的方法如下:

首先,我们需要定义一个类,该类包含一个属性和两个本地变量。例如:

代码语言:txt
复制
public class MyClass
{
    public int MyProperty { get; set; }
    public int LocalVariable1 { get; set; }
    public int LocalVariable2 { get; set; }
}

接下来,我们可以使用C# 8的switch表达式来返回这个类的实例,并将属性和本地变量赋值。例如:

代码语言:txt
复制
var result = someValue switch
{
    1 => new MyClass { MyProperty = 1, LocalVariable1 = 10, LocalVariable2 = 20 },
    2 => new MyClass { MyProperty = 2, LocalVariable1 = 30, LocalVariable2 = 40 },
    _ => new MyClass { MyProperty = 0, LocalVariable1 = 0, LocalVariable2 = 0 }
};

在上面的代码中,我们使用了switch表达式来根据someValue的值返回不同的MyClass实例。根据不同的情况,我们可以设置不同的属性和本地变量的值。

对于属性和本地变量的赋值,我们可以使用对象初始化器的语法来设置它们的值。

最后,我们可以通过result变量来访问返回的实例以及其中的属性和本地变量。例如:

代码语言:txt
复制
Console.WriteLine(result.MyProperty); // 输出:1
Console.WriteLine(result.LocalVariable1); // 输出:10
Console.WriteLine(result.LocalVariable2); // 输出:20

这样,我们就成功地从C# 8 switch表达式返回到一个属性和两个本地声明的变量了。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法给出具体的链接地址。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,您可以通过访问腾讯云官方网站来了解更多相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#8.0新增特性

自动实现属性一个例外;编译器会将所有自动实现 Getter 视为 readonly,因此,此处无需向 X Y 属性添加 readonly 修饰符。...语句有如下几点改进: 1.变量位于 switch 关键字之前 2.将 case : 元素替换为 =>(此处借鉴了lambda表达式语法格式) 3.将 default 事例替换为...静态本地函数: 现在可以向本地函数添加 static 修饰符,以确保本地函数不会封闭范围捕获(引用)任何变量。下面的代码包含一个静态本地函数。...此语言支持依赖于两个新类型两个新运算符:System.Index 表示一个序列索引来自末尾运算符 ^ 索引,指定一个索引与序列末尾相关System.Range 表示序列子范围,范围运算符 .....与任何非托管类型一样,可以创建指向此类型变量指针,或针对此类型实例在堆栈上分配内存块: 表达式表达式stackal C# 8.0开始,如果 stackalloc 表达式结果为 System.Span

1.1K40

C#7.0 新增功能

可以针对值类型引用类型进行测试,并且可以将成功结果分配给类型正确变量switch 匹配表达式具有常见语法,它基于已包含在 C# 语言中 switch 语句。...可以在每个 case 标签中测试 switch 表达式类型。 与 is 表达式一样,可以为该类型指定一个变量。 可以添加 when 子句以进一步测试该变量条件。...这些额外私有方法使每个方法保持小且集中。 本地函数使你能够在另一个方法上下文内声明方法 。 本地函数使得类阅读者更容易看到本地方法仅从声明上下文中调用。...C# 7.0 扩展了可作为表达式实现允许成员。 在 C# 7.0 中,你可以在属性 索引器 上实现构造函数 、终结器 以及 get set 访问器。...这使得编写更多基于表达式代码变得更容易。 不需要其他语句来进行错误检查。 C# 7.0 开始,throw 可以用作表达式语句。 这允许在以前不支持上下文中引发异常。

1.4K10

C#8.0 新增功能

03 在更多位置中使用更多模式 模式匹配 提供了在相关但不同类型数据中提供形状相关功能工具。 C# 7.0 通过使用 is表达式 switch 语句引入了类型模式常量模式语法。...这些技术提供了另一种表达设计方式。 除了可以在新位置使用新模式之外,C# 8.0 还添加了“递归模式” 。 任何模式表达式结果都是一个表达式。...递归模式只是应用于另一个模式表达式输出模式表达式Switch 表达式 通常情况下,switch 语句在其每个 case 块中生成一个值。...05 静态本地函数 现在可以向本地函数添加 static 修饰符,以确保本地函数不会封闭范围捕获(引用)任何变量。...08 异步流【*重要*】 C# 8.0 开始,可以创建并以异步方式使用流。 返回异步流方法有三个属性: 它是用 async 修饰符声明。 它将返回 IAsyncEnumerable。

86430

C#知多少 | 每个版本都更新了什么?

5本地函数(内部) 本地函数使你能够在另一个方法上下文内声明方法。 本地函数使得类阅读者更容易看到本地方法仅从声明上下文中调用。...现在可以向本地函数添加 static 修饰符,以确保本地函数不会封闭范围捕获(引用)任何变量。... C# 9.0 开始,可为属性索引器创建 init 访问器,而不是 set 访问器。...调用方可使用属性初始化表达式语法在创建表达式中设置这些值,但构造完成后,这些属性将变为只读。 仅限 init 资源库提供了一个窗口用来更改状态。...; 4模式匹配增强功能 C# 9 包括新模式匹配改进: 类型模式要求在变量是一种类型时匹配 带圆括号模式强制或强调模式组合优先级 联合 and 模式要求两个模式都匹配 析取 or 模式要求任一模式匹配

1.7K20

C# 7.0 探索之旅

C# 7.0 中我们用模式改进了两个已有的语言结构: is 表达式右边现在可以是表达式,而不仅仅是类型了 switch 语句中 case 子句现在可以匹配模式,而不仅仅是常量了 在未来 C#...)——通过模式引入变量——之前描述过 out 变量很像,都可以在表达式声明,也可以在最近作用域中使用。... out 变量一样,模式变量也是可以修改。我们经常以“表达式变量”来统称 out 变量模式变量。...这保证了 null 值不会意外地被类型模式抢先匹配;你需要更加明确如何处理它们(或是将它们留给 default 子句)。 由 case …: 标签引入模式变量只在当前 switch 节有效。...更多表达式体成员(Expression bodied members) 表达式体方法,属性等是 C# 6.0 中一大亮点,但我们并未所有成员上启用它。

1.3K90

C# 9.0新特性介绍

属性初始值设定项可明确哪个值正在设置哪个属性。 缺点是这些属性必须是可设置 C# 9.0 开始,可为属性索引器创建 init 访问器,而不是 set 访问器。...在完成所有初始化(包括属性初始化表达式 with 表达式)之后,构造阶段实际上就结束了。 上述位置记录示例演示了如何使用仅限 init 资源库通过 with 表达式来设置属性。...:is 模式表达式switch 表达式、嵌套模式以及 switch 语句 case 标签模式。...此标志指示 CLR 对所有局部变量进行零初始化。 1.0 开始,localsinit 标志一直是 C# 默认行为。...类似的功能可改进条件表达式目标类型解析。进行此更改后,两个表达式无需从一个隐式转换到另一个,而是都可隐式转换为目标类型。你可能不会注意到此更改。

2K20

Java失业者转.NET开发路线目录

变量声明 C#Java变量声明方式非常相似: C#: int age = 25; string name = "Alice"; bool isStudent = true; Java: int age...作为一个Java转向C#开发者,你会发现这些额外特性可以让你代码更加简洁表达力更强。在实际编程中,合理利用这些特性可以提高代码可读性性能。...作为一个Java转向C#开发者,你会发现这些额外特性可以让你代码更加优雅和易读。在实际编程中,合理利用这些特性可以提高代码质量开发效率。...作为一个Java转向C#开发者,你会发现这些额外特性可以让你代码更加优雅和易读。特别是模式匹配switch表达式,它们可以大大简化复杂条件逻辑。...作为一个Java转向C#开发者,你会发现这些额外特性可以大大提高你编程效率代码质量。

14210

C# 9.0 中新增功能

在完成所有初始化(包括属性初始化表达式 with 表达式)之后,构造阶段实际上就结束了。 上述位置记录示例演示了如何使用仅限 init 资源库通过 with 表达式来设置属性。...:is 模式表达式switch 表达式、嵌套模式以及 switch 语句 case 标签模式。...此标志指示 CLR 对所有局部变量进行零初始化。 1.0 开始,localsinit 标志一直是 C# 默认行为。...类似的功能可改进条件表达式目标类型解析。 进行此更改后,两个表达式无需从一个隐式转换到另一个,而是都可隐式转换为目标类型。 你可能不会注意到此更改。...有关详细信息,请参阅 Lambda 表达式一文中 Lambda 表达式输入参数一节。 最后,现在可将属性应用于本地函数。 例如,可将可为空属性注释应用于本地函数。

1.7K20

C#7.0中有哪些新特性?

输出变量 在当前 C# 中,使用输出参数并不像我们想那样方便。在你调用一个无输出参数方法之前,首先必须声明一个变量并传递给它。...在 C#7.0,我们正在加强两个现有的具有模式语言结构: is 表达式现在具有一种右手侧模式,而不仅仅是一种类型 switch 语句中 case 语句现在可以使用匹配模式,不只是常数值 在 C#未来版本中...)早前描述输出变量比较类似,它们可以在表达式中间声明,并在最近范围内使用。...这保证了空值不会不小心被任何类型模式匹配上情况;你必须更明确如何处理它们(或放弃它而使用默认语句)。 通过一个 case 引入模式变量:标签仅在相应 Switch 范围内。...更多 expression bodied 成员: expression bodied 方法属性是对 C# 6.0 巨大提升。

1.5K80

欢迎来到 C# 9.0(Welcome to C# 9.0)

C# 9.0 正在成形,我想大家分享一下我们对下一版本语言中添加一些主要特性想法。 对于 C# 一个新版本,我们都在努力让常见编码场景实现变得更加清晰简单,C# 9.0 也不例外。...record Student : Person { int ID; } 然后,让我们 with 表达式示例开始,实际地创建一个 Student,但将它存储在 Person 变量中: int newId...(Target typing)”是一个术语,当一个表达式使用它地方上下文中获得其类型时,我们使用这个术语。...例如,null lambda表达式始终是目标类型。 在 C# 9.0 中,一些以前不是目标类型表达式变得可以由其上下文推导。...:) 有时有条件 ?? ?: 表达式在分支之间没有明显共享类型,这种情况目前是失败。但是如果有一个两个分支都可以转换成目标类型,在 C# 9.0 中将是允许

1K30

C#学习记录

一、工具环境 Microsoft Visual Studio 2010 windows操作系统 二、结构 一个 C# 程序主要包括以下部分: 命名空间声明(Namespace) 一个 class...Class 方法 Class 属性 一个 Main 方法 语句(Statements)& 表达式(Expressions) 注释 C# 文件后缀为 .cs 1.第一个程序 打印出 “Hello...有丰富内置运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 运算符 描述 实例 + 把两个操作数相加 A + B 将得到 30 - 一个操作数中减去第二个操作数 A...if…else 语句 一个 if 语句 后可跟一个可选 else 语句,else 语句在布尔表达式为假时执行。...嵌套 if 语句 您可以在一个 if 或 else if 语句内使用另一个 if 或 else if 语句。 switch 语句 一个 switch 语句允许测试一个变量等于多个值时情况。

19020

追随 KotlinScala,看 Java 12-15 现代语言特性

当然如果只能这样用,那还称不上 switch 表达式,既然是表达式那么一定可以有一个返回值。...表达式中箭头右侧不仅可以是常规表达式,还可以是一个代码块,在块中通过 yield 来指定返回值。...switch 表达式优点不仅是简洁且具有返回值,还避免了传统 switch 语句一些坑(如忘记写 break 语句,再如各 case/default 子句共享同一个局部作用域)。...(通常译为“本地方法”,按说应该叫“原生方法”) 除了这些限制之外,它与普通类一致: 用 new 实例化 可以在顶层声明,也可以在类内部、局部作用域中声明 可以声明静态方法与实例方法 可以声明静态字段与静态初始化块...当然语言需要渐进式演化,这也是情理之中事。唯有两点我觉得有些遗憾: 空安全 隔壁 C# 8 引入空安全经验告诉我们: 即便语言当初做了错误设计,假如迷途知,仍然能够回到正轨。

1.3K20

14万字 | 400多道JavaScript 面试题及详细答案(建议收藏)

17 let 关键字用途是什么? 18 let var 有什么区别? 19 为什么选择 let 这个名字作为关键字? 20 你如何在没有错误情况下重新声明 switch 块中变量?...⬆ 返回顶部 ---- 20.你如何在没有错误情况下重新声明 switch 块中变量? 如果您尝试在 a 中重新声明变量switch block则会导致错误,因为只有一个块。...3.它用于比较两个数字极性。 4.它用于比较两个对象。 ⬆ 返回顶部 回到第150题 ---- 192.如何属性一个对象复制到另一个对象?...如果不使用解构赋值,交换两个值需要一个临时变量。而使用解构功能,可以在一个解构表达式中交换两个变量值。...⬆ 返回顶部 回到第350题 ---- 354.如何字符串中删除所有换行符? 最简单方法是使用正则表达式来检测替换字符串中换行符。

12.7K20

C#3.0新增功能03 隐式类型本地变量

Visual C# 3.0 开始,在方法范围内声明变量可以具有隐式“类型”var。 隐式类型本地变量为强类型,就像用户已经自行声明该类型,但编译器决定类型一样。...i 以下两个声明在功能上是等效: var i = 10; // 隐式类型 int i = 10; // 显式类型 下面的示例演示两个查询表达式。...有关详细信息,请参阅如何:在查询表达式中使用隐式类型本地变量和数组。 var 匿名类型 在许多情况下,使用 var 是可选,只是一种语法便利。...但是,在使用匿名类型初始化变量时,如果需要在以后访问对象属性,则必须将变量声明为 var。 这是 LINQ 查询表达式常见方案。 有关详细信息,请参阅匿名类型。...源代码角度来看,匿名类型没有名称。 因此,如果使用 var 初始化了查询变量,则访问返回对象序列中属性唯一方法是在 foreach 语句中将 var 用作迭代变量类型。

74120

C# 12 中新增八大功能你都知道吗?

前言 转眼之间C#都已经更新到了12了,那么C# 12 中新增八大功能你都了解过吗?今天我们来简单介绍一下C# 12 中新增八大功能。 C#/.NET该如何自学入门?... C# 12 开始,可以在类结构中声明主构造函数。主构造函数参数都在类整个主体范围内。为了确保显式分配所有主构造函数参数,所有显式声明构造函数都必须使用 this() 语法调用主构造函数。...将任何参数放在类型名称后面的括号中: public class NameParameter(string name) { public string Name => name; } 以下代码初始化主构造函数参数计算两个只读属性...可以为 Lambda 表达式参数定义默认值。语法规则与将参数默认值添加到任何方法或本地函数相同。...ref readonly修饰符表示方法希望参数是一个变量,而不是一个变量表达式。不是变量表达式包括常量、方法返回值属性。如果参数不是变量,编译器会发出警告。

21010

C# 8 模式匹配

C# 8 里面的Pattern Matching 使用Deconstructor 位置匹配模式 下面两个类TeacherStudent都由构造函数(Constructor)Deconstructor...下面我要写一个方法,根据不同形状,显式相应信息。这里我会使用C# 8 switch表达式。 先从最简单只有一种情况开始: ?...方法参数类型是object,然后使用C# 8switch表达式,该表达式有返回值,所以可以把返回值放到变量里面然后返回。 ?...这句话意思就是,如果shape是Rectangle类型,那么我们可以通过r这个变量来访问它,右侧字符串就是这个case表达式值,这里返回值就是一个字符串。...但还是不要过度使用这种嵌套模式,毕竟人类还需要阅读你代码。。。 元组匹配模式 先定义一个枚举: ? 然后写一个方法,传进两个颜色,得到混合后颜色: ? 这里面用就是元组匹配模式。

1.1K20

7 个令人惊讶 JavaScript “特性”

任何一个代码块中 break 你应该已经知道你可以任意循环中 break continue —— 这是一个相当标准程序设计语言结构。...; } }; with(a) { { b } } 回到原始例子,我们给我们赋值语句里变量加了圆括号 —— 你可能认为它也适用于解构,但它不是。...var a, b, c; (a) = 1; //这句不是变量解构 [b] = [2]; ({c} = { c : 3 }); 对数值进行解构 解构一个方面你可能也没有意识到,属性名不是必须要是不带引号字符串..."); } 函数表达式与此相反,因为赋值一个变量时候,变量声明被提升,但是具体赋值没有被提升。...本质上讲,变量被提升到块级作用域开始,但是在声明任何访问都会产生引用错误。

42220

使用C#开发数据库应用程序

结构 语法: Java中 C#中 swtich() switch() switch() { { { case 常量表达式1; case 常量表达式1; case...SelectedIndex 当前选定项目的索引号,列表框中每个项都有一个索引号,0开始 SelectedItem 获取当前选定项 (7)分组框【GroupBox】 (8)面板【Panel...当前所选选项卡页索引值 c.使用图片框、图像列表、计时器控件 图片属性 Image 图片框显示图像 SizeMode 指定如何处理图片位置控件大小 图像列表属性 Images...具体,亲查询P137页 第六章 用ADO.NET连接数据库 6-1:ADO.NET概述 a.ADO.NET简介 ADO.NET可以把数据源检索到数据保存在本地一个叫做"数据集"地方,这样应用程序直接操作本地数据就行了...(2)设置DataGridView属性个列属性 (3)指定DataGridView数据源 c.如何保存修改后数据 (1)增加"保存修改"按钮 (2)编写事件处理方法 d.常见错误

5.9K30
领券