如果您使用的是 .NET Core 构建系统,则可以使用其预定义的符号:
#if NET40
public Tuple<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#else
public KeyValuePair<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#endif
使用跨平台工具和#if(C# 参考)开发库中记录了预定义符号的列表:
.NET 框架: NETFRAMEWORK
, NET48
, NET472
, NET471
, NET47
, NET462
, NET461
, NET46
, NET452
, NET451
, NET45
, NET40
, NET35
,NET20
.NET 标准: NETSTANDARD
, NETSTANDARD2_1
, NETSTANDARD2_0
, NETSTANDARD1_6
, NETSTANDARD1_5
, NETSTANDARD1_4
, NETSTANDARD1_3
, NETSTANDARD1_2
, NETSTANDARD1_1
,NETSTANDARD1_0
.NET 5+(和 .NET Core): NET
, NET6_0
, NET6_0_ANDROID
, NET6_0_IOS
, NET6_0_MACOS
, NET6_0_MACCATALYST
, NET6_0_TVOS
, NET6_0_WINDOWS
, NET5_0
, NETCOREAPP
, NETCOREAPP3_1
, NETCOREAPP3_0
, NETCOREAPP2_2
, NETCOREAPP2_1
, NETCOREAPP2_0
, NETCOREAPP1_1
,NETCOREAPP1_0