gpt4 book ai didi

C# 使用 .net 3.5 调用不带参数

转载 作者:行者123 更新时间:2023-11-30 22:08:43 26 4
gpt4 key购买 nike

我想调用一个带有两个 out 参数和 bool 作为返回值的函数。现在我的问题是我看到这两个参数在我调试时发生了变化,但是当函数返回时它们仍然回到 length = 0(它们初始化的方式)。

我看到 .net-framework 4 有一个很好的解决方案,但不幸的是我必须使用 .net-framework 3.5。

这是我的代码:

public delegate bool GetAllCheckedItemsDelegate(out int[] cTypes, out int[] cFiles);
public bool GetAllCheckedItems(out int[] cTypes , out int[] cFiles )
{
if (ListView.InvokeRequired)
{
cTypes = new int[0];
cFiles = new int[0];
return (bool)ListView.Invoke(new GetAllCheckedItemsDelegate(GetAllCheckedItems), new object[] { cTypes, cFiles });
}
else
{
cTypes = new int[ListView.CheckedItems.Count];
cFiles = new int[ListView.CheckedItems.Count];
for (int i = 0; i < ListView.CheckedItems.Count; i++)
{
// ......code......
}
return (ListView.CheckedItems.Count > 0);
}
}

最佳答案

我不太喜欢“out”关键字,那么使用包含信息的类 (Row) 怎么样:

using SCG = System.Collections.Generic;
using System.Linq;
public class Row {
public int CheckedType { get; set; }
public int CheckedFile { get; set; }
}
...
public delegate SCG.IEnumerable<Row> GetAllCheckedItemsDelegate();
public bool GetAllCheckedItems() {
if (ListView.InvokeRequired) {
var rows = ListView.Invoke(new GetAllCheckedItemsDelegate(GetAllCheckedItems)
, new object[] {});
return rows.Count() > 0;
} else {
var rows = new SCG.List<Row>();
for (int i = 0; i < ListView.CheckedItems.Count; i++) {
// create and set row
var row = new Row { CheckedType = x, CheckedFile = y };
...
rows.Add(row);
}
return rows.AsReadOnly();
}
}

关于C# 使用 .net 3.5 调用不带参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22092161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com