11

我正在使用 ReSharper 重构一些 c# 代码。我遇到的一件事是我不熟悉的 ac# 运算符。

在我的代码中,我有这个

Mathf.FloorToInt(NumRows/2)

其中 NumRows 是一个整数。ReSharper 建议我应该将其更改为

Mathf.FloorToInt(f: NumRows/2)

我很确定这f:是一些标志,它告诉它将 NumRows 转换为浮点数,但我找不到任何f:在线文档。谁能详细说明究竟是什么f:或将我链接到有关它的 MSDN 页面?

(虽然我很清楚 f: 的作用,但很难在互联网上搜索冒号,我想在使用它之前知道它的作用)

更新 1:无论我想做什么,我都对 f 冒号语法感兴趣

更新 2:原来它实际上是 Visual Studio 建议我可以添加参数名称“f”而不是 ReSharper,但这不会改变正确的答案..

4

3 回答 3

20

这是一个命名参数。看 的定义Mathf.FloorToInt,它会有一个名为 的参数f

Resharper 表示,在这种情况下,通过使用命名参数可以使代码更具可读性。

于 2012-07-23T17:14:20.947 回答
9

在 C# 4.0 中,您可以在方法调用中切换参数表达式。

当只有一个参数时,它对你没有多大帮助,如果有的话:毫无疑问,如果只有一个参数,表达式代表什么。但是,使用多个参数时,该功能变得更加有用:您可以将参数名称与表示其值的表达式配对,并以您喜欢的任何顺序传递参数。您的程序的读者不需要参考方法签名来理解哪个表达式代表哪个参数。

private static void MyMethod(int a, int b, int c) {
    Console.WriteLine("{0} {1} {2}", a, b, c);
}

public static void Main(string[] args) {
    MyMethod(1, 2, 3);
    MyMethod(c:1, a:2, b:3);
}

这打印

1 2 3
2 3 1
于 2012-07-23T17:15:53.940 回答
3

您正在查看命名参数语法

于 2012-07-23T17:15:11.130 回答