簡體   English   中英

C#中“class => someFunction”的含義是什么意思

[英]What does “Property where class => someFunction” mean in C#

我正在瀏覽Github上EF7代碼並找到一條如下所示的行:

public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class => _setInitializer.Value.CreateSet<TEntity>(this);

我之前在類級別上看過這種語法,如下所示:

public class SomeClass<T> where T : class

其中說T應該是類型類。 但來自EF7源的這條線讓我感到困惑。 我不確定它是做什么的。

它是一個表達身體的成員 ,是C#6中的一種新語法。

這是一種方法,而不是財產。 C#不允許通用屬性。

它是一樣的

public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class
{
    return _setInitializer.Value.CreateSet<TEntity>(this);
}

這種語法確實有點令人困惑,但實際上這里的lambda構造與泛型約束無關。 它只是一個表達式身體方法碰巧有一個通用約束。

您可以將其視為:

public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class
{
    return _setInitializer.Value.CreateSet<TEntity>(this);
}

請參閱Roslyn Wiki

這是一個名為Expression Bodied Method的C#6.0功能。

在這里閱讀它。

代碼相當於:

public virtual DbSet<TEntity> Set<TEntity>() where TEntity : class 
{
    return _setInitializer.Value.CreateSet<TEntity>(this);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM