- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在看ASP.NET MVC Storefront 再次 观看视频系列,看到了一些我以前从未注意或注意过的东西。我注意到有很多对 this
的引用在各种方法的签名列表中。这是一个示例:
public static Category WithCategoryName(this IList<Category> list, string categoryName)
{
return
(
from s in list
where s.Name.Equals(categoryName, StringComparison.InvariantCultureIgnoreCase)
select s
)
.SingleOrDefault();
}
我立刻明白了IList<Category> list
和 string categoryName
在签名中,但对什么感到困惑this
因此,作为一个 95% 的 VB 人,我将代码弹出到我最喜欢的转换器中并得到:
<System.Runtime.CompilerServices.Extension>
Public Shared Function WithCategoryName(list As IList(Of Category), categoryName As String) As Category
Return
(
From s In list
Where s.Name.Equals(categoryName, StringComparison.InvariantCultureIgnoreCase)
Select s
)
.SingleOrDefault()
End Function
首先,我不太清楚为什么 <System.Runtime.CompilerServices.Extension>
被包括在内,也许它只是转换器,但是,如您所见,this
除非它与上述<System.Runtime.CompilerServices.Extension>
有关,否则没有转换成我能说的任何东西.
所以问题是:
this
实际上在 C# 方法签名中引用和/或做?所以我们明确说明了this
does in fact 表示扩展方法,从给出的答案来看,似乎没有内联 VB 等价物。
我想补充一点,因为我提到了 ASP.NET MVC Storefront视频,上面的 C# 示例是从他的 CategoryFilters
中提取的类(class)。我假设这就是您实现被称为管道和过滤器 或管道 方法的方式。
我假设 VB.NET 处理扩展方法的方式是这样的,例如:
Imports System.Runtime.CompilerServices
Public Module StringExtensions
<Extension()> _
Public Function IsNullOrBlank(ByVal s As String) As Boolean
Return s Is Nothing OrElse s.Trim.Length.Equals(0)
End Function
End Module
最佳答案
那是一种扩展方法。 this
指定它是 this <parameter>
的扩展方法输入,在你的情况下,IList<Category>
.
There is a VB.NET equivalent here , 虽然它是一个属性,而不是关键字。
扩展方法需要知道要应用的类型,请注意,这对于泛型来说是显而易见的。扩展方法:
public static string GetNameOf(this List<Category> category) { return ""; }
除 List<Category>
外,将不可用.
关于c# - "this"在 C# 方法签名中指的是什么,是否有 VB.NET 等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10231457/
在我的应用程序中,我想检测手指按在屏幕上的类型。触摸类型可能是单点触摸或多点触摸。我搜索了很多,但找不到任何东西。 有什么方法可以找到类型吗? 最佳答案 不可能知道哪个手指在某个点,但您肯定可以获得每
以下代码是我一直在尝试用于多点触控的代码。手指一设置正确并在我拖动手指时四处移动。当我触摸并松开手指时,第二个手指出现并消失,但它永远不会移动。知道有什么问题吗? 我已阅读 developers bl
我是一名优秀的程序员,十分优秀!