我很难理解这段代码的实际工作原理.

请看这行代码:

private Guid DatabaseIdOne => Guid.Parse("e4d00000-7770-4e1b-8273-8e7afb12dd13");

它与以下内容有何不同:

private Guid DatabaseIdTwo = Guid.Parse("e4d00000-7770-4e1b-8273-8e7afb12dd13");

根据我目前的理解,作为方法的第一行代码,当您调用DatabaseIdOne时,它然后解析字符串(?).

有没有人能解释一下其中的区别.

推荐答案

private Guid DatabaseIdOne => Guid.Parse("e4d00000-7770-4e1b-8273-8e7afb12dd13");

expression-bodied property,请注意,它将在每次调用时调用Guid.Parse(请参见decompilation @sharplab.io).

private Guid DatabaseIdTwo = Guid.Parse("e4d00000-7770-4e1b-8273-8e7afb12dd13");

是缺省值设置为解析结果的字段.请注意,第一个实际上是只读的,而第二个不是(您可以在该字段中添加readonly个修饰符来解决这个问题).

另一个选项可以是具有默认值的只读属性:

private Guid DatabaseIdOne {get;} = Guid.Parse("e4d00000-7770-4e1b-8273-8e7afb12dd13");

Csharp相关问答推荐

C#中的多yield 机制

应用程序启动时出现错误:操作无法同时使用表单和SON主体参数

在实际上是List T的 IESEARCH上多次调用First()是否不好?

为什么.Equals(SS,StringComparison. ClientCultureIgnoreCase)在Net 4.8和6.0之间不同?

等待限制选项似乎不适用于频道

下拉图片点击MudBlazor

在. NET Core 8 Web API中,当为服务总线使用通用消费者时,如何防止IServiceProvider被释放或空?"

从应用程序图API调用访问所有者字段

Thad.Sept()vs Task.Delay().Wait()

ASP.NET Core AutoMapper:如何解决错误 CS0121调用在以下方法或属性之间不明确

在实体框架中处理通用实体&S变更跟踪器

如何将DotNet Watch与发布配置和传递给应用程序的参数一起使用?

EF核心区分大小写的主键

C#中类库项目的源代码生成器

序列化过程中的死循环

SharpZipLib在文件名前加上目录名,生成tar.gz

Xamarin.Forms项目中缺少MainPage.xaml

SignalR跨域

除非首先访问使用的终结点,否则本地API上的终结点不起作用

Excel将';@';添加到具有范围的公式中