• Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
  • Trang chủ
  • Tin công nghệ
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    5 Design Pattern mà developer nên biết

    5 Design Pattern mà developer nên biết

    Live Stream và những điều có thể bạn chưa biết

    Live Stream và những điều có thể bạn chưa biết

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    Machine Learning góp phần cải thiện chiến lược Digital Marketing của bạn như thế nào?

    7 công nghệ nổi bật phát triển mạnh năm 2018

    7 công nghệ nổi bật phát triển mạnh năm 2018

    Bitcoin đã được khai thác 80% tổng lượng

    Bitcoin đã được khai thác 80% tổng lượng

  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
    sublime-text-3

    SublimeText: 10 plugin hổ trợ JavaScript

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    Top xu hướng thiết kế web cho năm 2017

    Top xu hướng thiết kế web cho năm 2017

    Tạo Layout đơn giản với DIV và CSS

    Tạo Layout đơn giản với DIV và CSS

    Tạo ứng dụng Swing bằng Netbean

    Backlink là gì? Cách tạo backlink?

    Tạo ứng dụng Swing bằng Netbean

    Giới thiệu về HTML5 và CSS3

  • Lập trình C#
    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Tag Helpers trong ASP.NET Core MVC

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 7

    Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

    Những tính năng mới trong C# 6

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    Hướng dẫn sử dụng Crystal Report với Visual Studio

    7 thủ thuật Windows Group Policy trong Windows 10

    7 thủ thuật Windows Group Policy trong Windows 10

    5 cách để học lập trình nhanh hơn

    Ví dụ minh họa Client-Server trong C#

    Remotting

    Remotting

    Debug chương trình với VS.NET

    Debug chương trình với VS.NET

    Tạo Form có hình dạng bất kỳ trong C#

    Tạo Form có hình dạng bất kỳ trong C#

  • Lập trình PHP
    php-mysql

    Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Sử dụng câu lệnh SELECT trong PHP và MySQL

    php-mysql

    Lấy giá trị của cột tự tăng của record vừa được thêm mới

    php-mysql

    MySQL prepared statements trong PHP

    php-mysql

    Sử dụng INSERT trong MySQL & PHP

    php-mysql

    Tạo cơ sở dữ liệu và bảng trong MySQL bằng PHP

    sublime-text-3

    Sublime Text 3 và các plugin cần thiết cho lập trình Laravel

    WordPress-Cách chia bài viết dài thành nhiều trang

    WordPress-Làm nổi bật comment của tác giả bài viết

No Result
View All Result
Học Lập Trình
No Result
View All Result

Những tính năng mới trong C# 7

qadmin by qadmin
03/12/2020
in Lập trình C#, Tin công nghệ
0 0
0
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình
0
SHARES
29
VIEWS
Share on FacebookShare on Twitter

1. Local Functions

Local methods và functions là đã có trong phiên bản hiện tại của C# (vâng, chúng ta có thể đạt được chúng với việc sử dụng Func và Action types, thấy ở đây Func và Action), nhưng vẫn có một vài giới hạn với local method, chúng ta không thể có những tính năng sau.

  • Generic
  • Out parameter
  • Ref parameter
  • Params

Bây giờ với C# 7.0 chúng ta có thể vượt qua vấn đề này, nhìn đoạn code bên dưới.

private static void Main(string[] args)
{
    int local_var = 100;
    int LocalFunction(int arg1)
    {
        return local_var * arg1;
    }
 
    Console.WriteLine(LocalFunction(100));
}

Trong đoạn code trên chúng ta đã định nghĩa ‘LocalFunction’ như local function cái mà là bên trong Main Function ‘Main’, ở đây chúng ta có thể sử dụng hoặc tham chiếu trong đó.

2. Tuple-Types

Trả về nhiều giá trị từ một method và bây giờ là một thực tế phổ biến, chúng ta nói chung sử dụng datatype tùy biến, out parameter, dynamic return type hoặc một đối tượng tuple nhưng ở đây C# 7.0 mang những kiểu tuples và tuple literals cho bạn. nó chỉ trả về nhiều giá trị/ nhiều kiểu thông báo của đối tượng tuple. Quan sát đoạn code bên dưới:

( string, string, string, string) getEmpInfo()
{
    //read EmpInfo from database or any other source and just return them
    string firstName = "abc";
    string address = "Address";
    string city= "City";
    string state= "State";
     return (firstName, address, city, state); // tuple literal
}

//Just call above method and it will return multiple values 
 var empInfo= getEmpInfo();
WriteLine("Emp info as  {empInfo.Item1} {empInfo.Item2} {empInfo.Item3} {empInfo.Item4}.");

Ví dụ ở trên chúng ta có thể dễ dàng nhận nhiều giá trị từ tuples, tên nhưng Item1, Item2 là không ý nghĩa lắm. Vì vậy, hãy gán những tên ý nghĩa hơn trước lệnh return, nhìn ví dụ bên dưới:

(string strFName, string strAdd, string strC, string strSt) getEmpInfo()
{
    //code goes here
}

//Now when you call method get values with specific name as below 
var empInfo= getEmpInfo();
WriteLine("Emp info as {empInfo.strFName} {empInfo.strAdd} {empInfo.strC} {empInfo.strSt}.");

Ngoài ra bạn có thể trả về tên của chúng trực tiếp trong tuple literal như bên dưới

return (strFName: strFirstName, strAdd: strAddress, strCity: strC, strState: strSt);

Tuples là điều hữu ích nơi bạn có thể thay thế hash table hoặc dictionary một cách dễ dàng, thậm chí bạn có thể trả về nhiều giá trị cho một key đơn. Ngoài ra bạn có thể sử dụng nó thay vì List nơi bạn lưu trữ nhiều giá trị tại một vị trí đơn.

3. Record Type

C# hỗ trợ kiểu record, cái mà là không có gì nhưng một container của các thuộc tính và biến, hầu hết thời gian classes là đầy với thuộc tính và biến, chúng ta cần nhiều code chỉ để khai báo chúng nhưng với sự hỗ trợ của Record Type bạn có thể giảm công sức của bạn, nhìn đoạn bên dưới:

class studentInfo
{
    string _strFName;
    string _strMName;
    string _strLName;
    studentInfo(string strFN, string strMN, string strLN){
        this._strFName = strFN;
        this._strMName = strMN;
        this._strLName = strLN;
    }
    public string StudentFName {get{ return this._strFName;}}
    public string StudentMName {get{ return this._strMName;}}
    public string StudentLName {get{ return this._strLName;}}
}

Trong code trên chúng ta có một class với thuộc tính, constractor và biến, vì vậy để truy cập và khai báo biến tôi cần để viết thêm code. Để tránh nó tôi có thể sử dụng Record Type trong C#, nhìn đoạn sau

class studentInfo(string StudentFName, string StudentMName, string StudentLName);

4. Minimizing OUT

Out parameter là khá phổ biến khi chúng ta muốn để trả về nhiều giá trị từ method. Theo tự nhiên tham số out là kiểu ref và làm việc như một đối số, chúng ta có thể sử dụng một cách dễ dàng nhưng chỉ cần điều kiện biến out nên được khởi tạo trước khi nó truyền qua. Nhìn đoạn bên dưới.

class SetOut
{
    void AssignVal(out string strName)
    {
        strName = "I am from OUT";
    }
    static void Main()
    {
        string strArgu;
        AssignVal(out strArgu);
        // here contents of strArgu is "I am from OUT"
    }
}

C# 7.0 giảm nỗ lực của bạn để viết mở rộng code và bạn chỉ cần truyền đối số với không khởi tạo chúng. Quan sát code bên dưới.

static void Main()
{
    AssignVal(out string szArgu);
    // here contents of szArgu is "I am from OUT"
}

5. Non-‘NULL’ able reference type

Null referance là thực sự là một vấn đề đau đầu cho tất cả các lập trình viên, nó là rất nhiều ngoại lệ. Nếu bạn không kiểm tra chúng bạn sẽ nhận runtime exception hoặc nếu bạn kiểm tra chúng cho mỗi đối tượng thì code của bạn sẽ dài và rất dài, để giải quyết với vấn đề này C# 7.0 đến với kiểu non-nullable.

int objNullVal;     //non-nullable value type
int? objNotNullVal;    //nullable value type
string! objNotNullRef; //non-nullable reference type
string objNullRef;  //nullable reference type

Bây giờ nhìn tại trình phiên dịch bên dưới và ảnh hưởng sau khi chạy đoạn code

MyClass objNullRef;  // Nullable reference type
MyClass! objNotNullRef; // Non-nullable reference type
 
objNullRef = null;   // this is nullable, so no problem in assigning
objNotNullRef = null;   // Error, as objNotNullRef is non-nullable
objNotNullRef = objNullRef;      // Error, as nullable object can not be refered
 
WriteLine(objNotNullRef.ToString()); // Not null so can convert to tostring
WriteLine(objNullRef.ToString()); // could be null
 
if (objNullRef != null) { WriteLine(objNullRef.ToString); } // No error as we have already checked it
WriteLine(objNullRef!.Length); // No error

6. Pattern matching

C# 7.0 cho phép người sử dụng để sử dụng pattern trong câu lệnh IS và với SWITCH, như vậy chúng ta có thể khớp pattern với bất kì kiểu dự liệu nào, patterns có thể là một hằng số patterns, type patterns, var patterns. Đoạn code sau sẽ làm rõ khái niệm của bạn, hãy bắt đầu với IS pattern

public  void Method1( object obj)
{
    //following null is constant pattern
     if (obj  is null)  return;
    //datatype pattern, string is datatype that we check directly     
     if (obj  is  string st)
    { //code goes here }
    else
    return; 
}

Switch pattern trợ giúp nhiều như nó sử dụng bất kì kiểu dữ liệu nào cho việc khớp ngoài điều kiện ‘case cũng vậy có thể pattern của nó là khá mềm dẻo trong triển khai. Quan sát code bên dưới.

class Calculate();
class Add(int a, int b, int c) : Calculate;
class Substract(int a, int b) : Calculate;
class Multiply(int a, int b, int c) : Calculate;
 
Calculate objCal = new Multiply(2, 3, 4);
switch (objCal)
{
    case Add(int a, int b, int c):
        //code goes here
        break;
    case Substract(int a, int b):
        //code goes here
        break;
    case Multiply(int a, int b, int c):
        //code goes here
        break;
    default:
        //default case
        break;
}

Tham khảo New Features of C# 7.0 C sharp corner

Previous Post

Những tính năng mới trong C# 6

Next Post

Tag Helpers trong ASP.NET Core MVC

qadmin

qadmin

Related Posts

sublime-text-3

SublimeText: 10 plugin hổ trợ JavaScript

16/01/2021
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
5 Design Pattern mà developer nên biết

5 Design Pattern mà developer nên biết

30/07/2020
Live Stream và những điều có thể bạn chưa biết

Live Stream và những điều có thể bạn chưa biết

08/11/2018
10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

10 ngôn ngữ lập trình được sử dụng nhiều nhất để đóng góp mã nguồn mở

08/11/2018
Next Post
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

Trả lời Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

You might also like

sublime-text-3

SublimeText: 10 plugin hổ trợ JavaScript

16/01/2021
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Tag Helpers trong ASP.NET Core MVC

13/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 7

03/12/2020
Hướng dẫn sử dụng Layout trong Android và thiết kế giao diện hổ trợ nhiều loại màn hình

Những tính năng mới trong C# 6

03/12/2020
php-mysql

Sử dụng mệnh đề WHERE của câu lệnh SELECT trong PHP và MySQL

13/11/2020
php-mysql

Sử dụng câu lệnh SELECT trong PHP và MySQL

13/11/2020
Học Lập Trình

Code5s.com được xây dựng với mong muốn mang lại những bài học hữu ích, thiết thực, và chất lượng cho mọi người.

Chuyên mục

Công cụ Java & Java EE Lập trình Android Lập trình C# Lập trình PHP Thiết kế web Tin công nghệ Tips Tài liệu Wearable Web Services XML

Kết nối

  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

No Result
View All Result
  • Trang chủ
  • Tin công nghệ
  • Lập trình Android
  • Java & Java EE
  • Thiết kế web
  • Lập trình C#
  • Lập trình PHP

© 2020 Code5s.com

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms bellow to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In