你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
_var
没有找到相关结果
涵秋
赞同来自:
private string _name; public string Name { get { return this._name; } set { this._name = value; } }
public string Name { get; set; }
小明明
g++ -E helloWorld.cpp
ios_base::iostate __err = ios_base::iostate/ios_base::goodbit/; try { __streambuf_type* __sb = this->rdbuf//; if /__sb/ { if /__sb->pubsync// == -1/ __err |= ios_base::badbit; else __ret = 0; }
董宝中
user
User
Private user As String Public Property User As String Get Return user End Get Set/ByVal Value As String/ user = value End Set End Property
Private _user As String Public Property User As String Get Return _user End Get Set/ByVal Value As String/ _user = value End Set End Property
快网
裸奔
君笑尘
莫问
paramName
_fieldName
石油百科
卫东
知食
诸葛浮云
冰洋
field
public class CSharpClass { protected int field; public int Field { get { return field; } } }
Public Class VBClass Inherits CSharpClass Function Test// As Integer Return Field End Function End Class
郭文康
readonly
private readonly ILogger<mydependency> _logger; public MyDependency/ILogger<mydependency> logger/ { _logger = logger; }
三叔
要回复问题请先登录或注册
19 个回复
涵秋
赞同来自:
在 C++ 下划线符号通常表示闭合构件变量。
在 C#, 我通常会看到它仅在确定公共属性的基本私有成员变量时使用。 其他私有成员变量将没有下划线。 然而,随着自动性质的出现,这种使用主要是离开了背景。
到:
后:
小明明
赞同来自:
以下划线或双重下划线开头的名称是 RESERVED 对于开发人员 C++. 带有下划线的名称是为库保留的。
如果您阅读编码标准 C++, 这将看到它在第一页上写的:
"不要过载命名,但使用顺序命名协议:只有两个必需的选项:a/ 永远不要使用 "underhanded names,", 从下划线开始或包含双下划线;" /p2, C++ Coding Standards, Herb Sutter and Andrei Alexandrescu/
更详细,
http://www.open-std.org/jtc1/s ... 6.pdf
ISO 设置实际规则:
此外,一些标识符保留供实现使用。 C ++ 不应该以其他方式使用; 不需要诊断。 /和/ 每个包含双下划线的标识符 __ 或以下划线开始,然后是用于实施任何使用的资本信函。 /b/ 以下划线开头的每个标识符都保留用于实现用作全局名称空间中的名称。
如果您不小心地遇到了上述限制,则最好不要使用下划线启动符号。
您自己可以理解为什么在开发软件时,这样的下划线可能是灾难性的:
尝试编译一个简单的程序 helloWorld.cpp, 类似于这个:
您将看到背景中发生的一切。 这是一个片段:
您可以看到双重下划线开始的名称是多少!
此外,如果查看虚拟成员函数,您将看到* _VPTR是为在类中使用一个或多个虚拟成员函数时自动创建的虚拟表的指针! 但那是另一个故事......
如果使用下划线,您可能会遇到冲突问题,并且您将不知道他们会导致它们直到太晚。
董宝中
赞同来自:
衍生自 VB, 而不是来自 C# 或者 C++ /m_,... 这是另一件事/.
这导致克服注册的不敏感性 VB 声明属性时。
例如,这样的代码是不可能的 VB, 因为他考虑了
和
作为相同的标识符
因此,要克服这一点,有些人使用协议添加 '_' 在私人领域,所以它看起来像
因为许多公约都是为了 .Net 并保持两者之间的均匀性 C# 和 VB.NET 惯例,他们使用相同。
我找到了我所说的话 :
http://10rem.net/articles/net- ... tices
骆驼盒具有领先的重点。 在
VB.NET 总是表明 "Protected" 或者
"Private", 不使用 "Dim". 使用
"m_" 不推荐使用
与...不同的变量名称
属性仅用案例,尤其是
受保护的变量,因为它违反了
合规性并使你的生活
如果您编程,疼痛 VB.NET, 像你一样
必须打电话给你的成员
与属性不同的东西
使用权/致毒剂。 of
这里的项目领先的下划线
, 事实上是唯一的争议。
就个人而言,我更喜欢直接
骆驼注册没有下划线的
私有变量所以我没有
需要符合变量名称 "this."
将它们与参数区分开来
设计师或其他地方,我有
, 可能会有名称碰撞。
当不敏感到注册时 VB.NET's 这是
更重要的是,因为你的
访问属性通常具有
与您的私人会员相同
变量,除了下划线。
关于 m_, 然后实际上我们只是说话
关于美学。 一世 /还有许多其他人/
找 m_ ugly, 所以它看起来像
, 变量名中有一个漏洞。 它
几乎令人反感。 我用它
VB6 所有的时间,但它只是
因为变量不可能
初始下划线。 我不能
更快乐,看到他是如何离开的。 Microsoft
建议不要使用 m_ /和
straight _/, 虽然他们做了
两者都在其代码中。 另外,前缀与
直接的 "m"-这是正确的。 当然,
由于它们主要被编码 C#,, 他们能
有闭合的成员
如果它们与属性不同。 人们
必须做别的事情。 反而
为了试图提出来
language-by-language 在特殊情况下,我
我推荐最初的下划线
所有支持它的语言。 如果一个
我完全想要我的课程
Cls兼容,我可以离开
任何受保护的前缀
成员变量 C#. 然而,在实践中,我
永远不要担心,因为我保留了一切
可能受保护的成员变量
私有,而是交付受保护
配件和突变者。 为什么?:
简而言之,这是一项协议
简单的 /一个符号/, 简单可读
/你的观点没有被其他人分散注意力
铅符号/ 成功
避免冲突名称
程序水平的变量和
类级的属性 properties.class-level.
快网
赞同来自:
https://coderoad.ru/228783/
什么是强调问题的负责 C++. 通常,您不应使用初始下划线,因为它为您的编译器的开发人员保留。 你看到的代码
, 可能是继承的代码,或由使用旧命名系统长大的人编写的代码,这些代码没有在领先的下划线上皱眉。
根据其他答案,他曾经被用过 C++ 识别类成员变量。 但是,它无关紧要任何装饰器或语法。 因此,如果要使用它,它将被编译。
我会讨论 C# 其他。
裸奔
赞同来自:
在 C++ 使用协议 _var 这是一个糟糕的语气,因为有规则管理在标识符之前使用下划线。 _var 保留为全局标识符 _Var /强调 + 大写字母/ 随时保留。 这就是为什么B. C++ 你会看到使用该协议的人 var_.
君笑尘
赞同来自:
使用 _field 帮助 Intelilsense 筛选所有类变量,只需键入 _.
通常我遵循
http://blogs.msdn.com/b/brada/ ... .aspx
但他建议不要使用强调。
莫问
赞同来自:
IE:
. 该标准还要求字段遵循相同的形式,但它可以导致模糊代码,因此许多团队需要强调的前缀来提高清晰度
IE:
.
涵秋
赞同来自:
邀请不要使用下划线
打开
会员。 为了
私人的
使用了下划线成员 OK. 实际上
http://www.wintellect.com/cs/b ... .aspx
/经常在手册中引用/ 用途 m_, 例如,我 A "s_" 私人静态成员。
我个人只使用 _ 参考您的个人成员。 "m_" 和 "s_" 与匈牙利符号的边界,这不仅不赞成 .NET, 但它可以是非常弄脏的,我发现许多成员的课程难以按字母顺序快速扫描眼睛 /想象 10 变量开始 m_/.
石油百科
赞同来自:
1/ 当我稍后阅读代码时,它可以帮助我跟踪类变量和局部变量。
2/ 它有助于B. Intellisense /或其他代码完成系统/, 当我正在寻找一个类变量。 简单了解第一个符号对于在可用变量和方法列表中过滤。
涵秋
赞同来自:
如上所述中已经提到的, _ 在开始时,可能意味着私有或受保护的类成员 C++.
让我说出一个有趣的故事可以有趣的琐事。 在 UNIX, 如果您有基本的库函数 C 和服务器一部分 kernel, 您希望在哪里提供功能 kernel 还有用户空间, _ 卡在插头函数前面导致函数 kernel 直接,没有做任何其他事情。 最着名和最熟悉的本出口示例// vs. _exit// 在核核中 BSD 和 SysV: 那里 exit// 在调用输出服务之前,请使用用户空间进行工作 kernel, 尽管 _exit 刚刚与退出服务匹配 kernel.
因此, _ 用于 "local" 在这种情况下的事情 local 它是机器本地。 通常 _functions// 没有便携。 在这种情况下,您不应该指望不同平台上的相同行为。
现在担心 _ 在诸如
㈡ _foo;
好吧,从心理学的角度来看, _ - 这是一件奇怪的是,在一开始就打印。 因此,如果要创建一个与别的碰撞概率较小的变量名称, ESPECIALLY 使用预处理器替换时,应考虑使用 _.
我的主要建议是始终遵循编码器社区的约定,以便您可以更有效地合作。
裸奔
赞同来自:
卫东
赞同来自:
知食
赞同来自:
诸葛浮云
赞同来自:
C#'s 'official' 名称协议在较低寄存器中规定简单名称 /没有强调/ 适用于私人字段。
我不知道标准协议 C++, 虽然强调是非常广泛的。
冰洋
赞同来自:
在任何情况下,这些都只是约定,你不会找到所有的一个来源。 这是一个风格问题,每个程序员,项目或公司都有自己的 /甚至不是/.
董宝中
赞同来自:
, 如果代码也必须可扩展 VB.NET.
/否则,我不会。/
只要 VB.NET is 对寄存器质疑的,在此代码中没有简单的方法来访问安全成员
:
E.g. 这将导致访问该物业。 getter, 而不是现场:
该死的,我甚至无法写作
在小写中 - VS 2010 继续纠正它。
使衍生类可以轻松访问 VB.NET, 你需要拿出另一个命名协议。 下划线的前缀可能是最不侵入性和最重要的 "historically accepted" 他们。
小明明
赞同来自:
郭文康
赞同来自:
用于C#的下划线的另一个使用是使用 DI ASP NET Core /注射依赖性/. 私人的
在构造期间已分配给输入的接口的类变量应以下划线开头。 我假设这是关于是否使用该类私有成员使用下划线的讨论 /虽然萨玛 Microsoft 跟着他/, 但绝对是。
</mydependency></mydependency>
三叔
赞同来自:
/. 过去,我使用以下命名协议 C# /这是基于协议 Microsofts 对于框架代码 .NET, 可以使用它 Reflector/:
实例字段:
m_fieldName
静态场:
s_fieldName
Public/Protected/Internal 成员:
PascalCasedName//
私人参与者:
camelCasedName//
它可以帮助人们在阅读不熟悉的代码时非常快速地了解元素的结构,使用,可用性和位置。