C# 中具有表达式主体的私有成员的标准命名约定是啥[关闭]

Posted

技术标签:

【中文标题】C# 中具有表达式主体的私有成员的标准命名约定是啥[关闭]【英文标题】:what is the standard naming convention for a private member with an expression body in C# [closed]C# 中具有表达式主体的私有成员的标准命名约定是什么[关闭] 【发布时间】:2021-12-23 06:24:47 【问题描述】:

我已阅读 https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions 中的命名约定。

但是,我在下面的这个例子中找不到答案:

public class A

    private int _b;
    
    // Should I use "_" + camel case to name this member:
    private string _c => _b.ToString();
    
    // Or should I use pascal case to name this member:
    private string C => b.ToString();

    成员_cC应该用getter方法或“私有计算字段”称为“私有属性”吗?为什么?

    如果我们想在内部使用一个成员 private 和一个类似于这个例子的表达式主体 (=>)。它的命名约定是什么?

【问题讨论】:

“但是,它没有提到这个案例:” - 嗯是的。您代码中的所有三个成员都是 fields,因此以下准则适用于 "Use camel casing ("camelCasing") when naming private or internal fields, and prefix them with _"。您使用=> 的事实是偶然的。 意见,不是答案。我会选择C(即PascalCase),因为它是一个只读属性。它是 PascalCase 的属性,它的公共/私有性无关紧要。 @MickyD:=> 确实很重要,它使 C 成为只读属性,而不是字段 【参考方案1】:

作为 C# 中常见的使用风格,fields 以小写字母开头,properties 以大写字母开头。通常,字段以_ 字符开头。如果数据成员是field,则称它为_c更合适,如果它是property,则称它为C

属性显示字段。 Fields 是在一个类中私有定义的,并且必须通过 get 和 set properties 来访问。 属性提供了一个抽象级别,允许您在不影响客户端使用您的类访问的外部路径的情况下修改字段。

在此示例中,如果您希望客户端始终将 _b 变量用作字符串,则无需定义字段或属性:

public class A

    private int _b;

    public string GetBAsString()
    
        return _b.ToString();
    


参考文献
What is the difference between a field and a property?

【讨论】:

我已经更新了我的问题,如果我需要一个私有成员和一个表达式主体,并且它的输出正在考虑现有文件,该怎么办。这个成员应该被称为“属性”还是“字段”。我知道几乎所有属性都是公开的,但不能是私有的吗? 属性在外观和用法上是 field-like,但运行 getter 和/或 setter的代码>。它是私人的还是公共的都没关系。您的 C 是私有的只读属性(getter 调用 _b.ToString(),没有 setter)

以上是关于C# 中具有表达式主体的私有成员的标准命名约定是啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

私有字段的命名约定

要遵循的 url 参数命名约定或标准是啥

您是不是使用与私有变量相同的约定来命名表单上的控件?

graphql 模式的命名约定是啥?

C99 语言中具有未命名成员的结构的正确行为是啥?

在 Python 中测试文件名是不是具有正确的命名约定