2015-12-08 13 views
5

Tôi đang cố gắng để mở rộng plugin này để sử dụng riêng của tôi ...Tại sao tôi nhận được lỗi biên dịch này trong lớp cơ sở trừu tượng của tôi?

https://github.com/jamesmontemagno/Xamarin.Plugins/blob/master/Connectivity/Connectivity/Connectivity.Plugin.Abstractions/BaseConnectivity.cs

Nhưng khi tôi copy đoạn code trên để Visual Studio, tôi đang nhận được một số lỗi.

enter image description here

Tôi có cần phải nhập khẩu một số khuôn khổ đặc biệt để sử dụng '=>' điều hành và 'Gọi' Phương pháp? Đây là một lớp cơ sở trừu tượng. Tôi đang sử dụng VS2013

+1

Bạn đang sử dụng VS2015? –

+0

Đây không phải là VS2013. Đó có phải là vấn đề không? – stepheaw

+1

Vấn đề là bạn đang cố gắng sử dụng cú pháp C# 6 trong VS2013. – Jonesopolis

Trả lời

14

?. là một tính năng từ C# 6, và cũng như toán tử => (khi được sử dụng cho các thành viên thân), chỉ có sẵn trong Visual Studio 2015.

đọc về họ ở đây null-conditional operators và đây => operator

C# < 6 cú pháp:

protected virtual void OnConnectivityChanged(ConnectivityChangedEventArgs e) 
{ 
    if (ConnectivityChanged != null) 
     ConnectivityChanged.Invoke(this, e); 
} 
+0

thêm một cái gì đó để đề cập đến '=>' cho một phương thức thân và tôi sẽ upvote. – DrewJordan

+2

Bạn cũng nên giải quyết nhận xét của Jonesopolis –

+0

Cảm ơn bạn. Làm thế nào tôi có thể làm lại điều này cho VS2013? – stepheaw

4

?.Null-conditional operators trong C# 6. Bạn đang sử dụng C# 6? C#6 featured

Thay thế mã này vào

if(ConnectivityChanged != null) 
{ 
    ConnectivityChanged.Invoke(this, e); 
} 

này tương đương với mã của chúng tôi ConnectivityChanged?.Invoke(this, e);

+0

Cảm ơn bạn. Làm thế nào tôi có thể làm lại điều này cho VS2013? – stepheaw

2

này nên làm điều đó.

protected virtual void OnConnectivityChanged(ConnectivityChangedEventArg e) 
{ 
    if(ConnectivityChanged != null) 
    { 
     ConnectivityChanged.Invoke(this,e); 
    } 
} 
Các vấn đề liên quan