gpt4 book ai didi

c# - 使用数组和 redim 保护器关键字将 VB 代码转换为 C#

转载 作者:行者123 更新时间:2023-11-30 14:47:35 25 4
gpt4 key购买 nike

这是我的 VB 代码:

If TxtStr(i) = "#" And TxtStr(i + 1) = "]" Then
RefStr = RefStr & "]"
ReDim Preserve RefStrLinks(1, RefStrLinkIndex)
RefStrLinks(0, RefStrLinkIndex) = RefStr
RefStr = RefStr.Replace("[#", String.Empty)
RefStr = RefStr.Replace("#]", String.Empty)
RefStrLinks(1, RefStrLinkIndex) = RefStr
RefStrLinkIndex = RefStrLinkIndex + 1
RefStr = String.Empty
RefStrFound = False
End If

这是我在 C# 中转换后的代码; RefStrLinks 声明为:

string[,] RefStrLinks = null;

但是每当我运行它时,由于ReDim Preserve,这会产生编译错误:

if (TxtStr[i].ToString() == "#" & TxtStr[i + 1].ToString() == "]")
{
RefStr = RefStr + "]";
Array.Resize<string>(ref RefStrLinks, RefStrLinkIndex + 1);
RefStrLinks[0, RefStrLinkIndex] = RefStr;
RefStr = RefStr.Replace("[#", string.Empty);
RefStr = RefStr.Replace("#]", string.Empty);
RefStrLinks(1, RefStrLinkIndex) = RefStr;
RefStrLinkIndex = RefStrLinkIndex + 1;
RefStr = string.Empty;
RefStrFound = false;
}

有人知道为什么吗?

最佳答案

对;我认为这里真正的问题是你有一个二维数组; RefStrLinks 不是 string[],而是 string[,],第一个轴上有维度 2。 Array.Resize 仅适用于向量(“向量”是基索引为 0 的一维数组,即 string[])。

坦率地说,我会用类似的东西替换所有这些(重新调暗数组或使用 Array.Resize 每个元素 荒谬 昂贵):

List<SomeBasicType> list = ...
...
// where "foo" and "bar" are the two values that you intend to store per item
var item = new SomeBasicType(foo, bar);
list.Add(item);

SomeBasicType 可能是一个包含两个字符串的不可变结构。或者更简单地说,在 C# "current": value-type tuples:

// declare the list (change the names to something meaningful for your code)
var list = new List<(string name, string url)>();

// ... add values efficiently

string name = "whatever"; // your per-item code goes here
string url = "some value"; // and here
list.Add((name, url));

// ... show that we have the data

foreach(var item in list)
{
Console.WriteLine($"{item.name} / {item.url}");
}

关于c# - 使用数组和 redim 保护器关键字将 VB 代码转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408327/

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