2018年1月9日 星期二

c# 6&7 新特色

1. 使用 valuetuple 結構定義具備多個屬性的資料 (需透過 nuget 安裝package)
2. 函數中可以定義函數
3. 字串常數中可以置入物件 (取代 string.format)
4. 屬性及方法支援 lambda
5. 使用 nameof 動態取得屬性名稱 (避免hardcode)

ex:
class test {
string FirstName;
string LastName;
string FullName => $"{FirstName}{LastName}"; // 3,4
void func1() {
 (int Height, int Weight) GetHeightAndWeight() //1,2
            {
                var returnVal = (Height: 172, Weight: 80); //1
                return returnVal;
            }
            var aa = GetHeightAndWeight();
aa.Weight++;
var bb=$"{nameof(FirstName)}:{FirstName}"; //3,5
}
}

使用 visual studio 開啟網站類型的專案需額外安裝 package
1. Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Microsoft.Net.Compilers
並修改 web.config
compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 <= 原本是6就會只支援 c# 6

沒有留言:

自訂權限驗證機制

// 使用 filter [Route("api/[controller]")] [ApiController] [Authorize] [TypeFilter(typeof(CustomAsyncAuthorizationFilter))] public c...