相关疑难解决方法(0)

C#7:Out变量中的下划线(_)和星号(*)

我在C#7阅读新出的可变功能在这里.我有两个问题:

  1. 它说

    我们允许"丢弃"作为输出参数,以a的形式_,让你忽略你不关心的参数:

    p.GetCoordinates(out var x, out _); // I only care about x
    
    Run Code Online (Sandbox Code Playgroud)

    问:我想这只是一个信息而不是C#7的新功能,因为我们也可以在C#7.0之前这样做:

    var _;
    if (Int.TryParse(str, out _))
    ...
    
    Run Code Online (Sandbox Code Playgroud)

    或者我在这里遗失了什么?

  2. 当我在同一博客中提到时,我的代码会出错:

    ~Person() => names.TryRemove(id, out *);
    
    Run Code Online (Sandbox Code Playgroud)

    *不是有效的标识符.Mads Torgersen的疏忽我猜?

c# c#-7.0

69
推荐指数
4
解决办法
2万
查看次数

C#现场命名指南?

我将自己编写一些C#代码,但我想确保遵循最广泛接受的命名约定,以防我想引入其他开发人员,发布我的代码或出售我的代码.现在我遵循微软设定的命名惯例,因为它们似乎是最广泛接受的.他们没有提到的一件事是为私人领域命名.在大多数情况下,我已经看到它们在camelCase中命名为受保护的字段但是这给我带来了一个问题,因为参数名称应该在camelCase中.以下面的构造函数为例:

public GameItem(string baseName, string prefixName, string suffixName)
{
    //initialize code
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我也将camelCase用于私有字段,则会出现命名冲突,除非我使用"this"来访问类字段(我认为这与大多数标准相反,更不用说更多的输入了).一种解决方案是为参数赋予不同的名称,但是为相同的数据提供2个不同的名称没有逻辑意义.我所知道的唯一一个在C++编码中常见的解决方案是在开头为私有成员提供下划线(_camelCase).C#编码通常接受这种解决方案吗?是否有另一个解决这个问题的方法(比如只使用属性(使用PascalCase)访问字段,即使在类本身中)?

c# naming-conventions

43
推荐指数
6
解决办法
4万
查看次数

有没有更简单的方法来编写以下 C# 语句

是否有更简单或替代的方法来编写以下 C# 句子?

if (iValue >= 4 && iValue <= 10) {... other code ...}
Run Code Online (Sandbox Code Playgroud)

我需要重复iValue两次吗?

我见过类似的结构,_ = ...some code... 但我不熟悉那个前导下划线?

c#

0
推荐指数
1
解决办法
79
查看次数

标签 统计

c# ×3

c#-7.0 ×1

naming-conventions ×1