我知道 C# 中的模式匹配类似于:
if (x is TypeY y)
{
// do thing...
}
Run Code Online (Sandbox Code Playgroud)
这或多或少相当于:
if (x is TypeY)
{
var y = (TypeY)x;
// do thing...
}
Run Code Online (Sandbox Code Playgroud)
但是,我在编写 IntelliSense 建议的代码时发现了一些东西。我有以下代码:
if (top is { } t)
{
// do stuff if 'top' is NOT NULL
}
Run Code Online (Sandbox Code Playgroud)
本来我以为我能做到if (top is not null t),结果却做不到;然后我转向if (top is int t),就在那时我提出了这个建议。这是什么意思?它是如何工作的?我只在 switch 语句中的模式匹配方面见过它,例如:
class Point
{
public int X { get; set; }
public int Y { get; set; }
} …Run Code Online (Sandbox Code Playgroud) 我正在研究一些代码,其目标是连接到API以获取用户名.
目前,我让代码在循环中工作,这就产生了运行时问题.每个"用户名列表"可以是数千个,这可能需要数小时才能获得所有这些.我的目标是找出如何使其成为线程,以允许一次多次查找.
这是我的代码,以及理解它所需的重要信息:
using Newtonsoft.Json.Linq;
public List<LeaderboardItem> LeaderboardList;
public LeaderboardItem LBItem;
public GetNames getNames;
public GetLeaderboardRuns(string GameCode, string Category, string Query)
{
LeaderboardList = new List<LeaderboardItem>();
var Client = new WebClient();
try
{
var Data = Client.DownloadString($"{URL.BaseUrl}/leaderboards/{GameCode}/category/{Category}{Query}");
foreach (var item in (JArray)JObject.Parse(Data)["data"]["runs"])
{
int place = (int)item["place"];
// This next line looks up the username on the API.
// This code takes several seconds per loop to complete.
// It is returned as a list of strings.
getNames = new …Run Code Online (Sandbox Code Playgroud) 我正在使用 GestureRecognizers 在 Xamarin 中玩耍,我有以下代码:
<CollectionView
Grid.Row="0"
EmptyView="No player information"
ItemsSource="{Binding Voices, Mode=OneWay}">
<CollectionView.GestureRecognizers>
<TapGestureRecognizer
Command="{Binding CommandPlayerTapped}"
CommandParameter="hi"
NumberOfTapsRequired="1" />
</CollectionView.GestureRecognizers>
<CollectionView.ItemTemplate>
<DataTemplate>
<StackLayout>
<views:PancakeItemView Margin="5" BorderColor="Black">
<views:VoiceInfoContainerView Style="{StaticResource VoiceDisplayStyle}" />
</views:PancakeItemView>
</StackLayout>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
Run Code Online (Sandbox Code Playgroud)
MyTapGestureRecognizer绑定到一个简单的命令,它会弹出一个消息;没什么复杂的。DataTemplate 是一个 PancakeView 包装一个简单的视图来显示一些名称,如下所示:
同样,这并不复杂,但是,我觉得这可能是问题所在,因为我在网上找不到任何其他信息。
我尝试将手势代码放在其他元素中,但没有成功。关于为什么点击这些视图无法触发命令的任何想法?