这个在C#中有冒号的参数叫什么?

cru*_*ush 2 c# syntax

我在C#遇到过一些我以前从未见过的东西(至少我不认识它)...此刻让我感到非常愚蠢.

我下载了Dapper,顺便说一句,这是很棒的,并且正在使用存储过程进行第一次查询.

connection.Query<MyObject>("[dbo].[sp_MyStoredProc]", new
{
    Name = keywords
}, commandType: CommandType.StoredProcedure);
Run Code Online (Sandbox Code Playgroud)

intellisense方法签名说这应该是一个IDbTransaction.这是某种类型的速记转换:

commandType: CommandType.StoredProcedure
Run Code Online (Sandbox Code Playgroud)

变成了IDbTransaction

问题

  1. 这称为语法是什么?
  2. 这里发生了什么?

谢谢!

Ser*_*kiy 5

这叫做命名参数.请参阅MSDN文章Named和Optional Arguments(C#编程指南):

命名参数使您无需记住或查找被调用方法的参数列表中的参数顺序.每个参数的参数可以通过参数名称指定.

Dapper的查询方法有许多带默认值的参数(timeout,commandType等).使用此语法,您只能指定其中一些而不指定其他语法.