使用VB.NET我希望能够在一行代码中替换字符串中的一系列字符.
即,类似于:
Dim charsToReplace as string = "acegi"
Dim stringToBeReplaced as string = "abcdefghijklmnop"
charsToReplace.ToArray().ForEach(Function (c) stringTobeReplaced = stringTobeReplaced.Replace(c, ""))
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用.
以下工作正常,但我不希望该字符串是类级变量:
Sub Main()
Dim toReplace As String = "acegikmoq"
Console.WriteLine(mainString)
Dim chars As List(Of Char) = toReplace.ToList()
chars.ForEach(AddressOf replaceVal)
Console.WriteLine(mainString)
Console.ReadLine()
End Sub
Dim mainString As String = "this is my string that has values in it that I am going to quickly replace all of..."
Sub replaceVal(ByVal c As Char)
mainString = mainString.Replace(c, "")
End Sub
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
如果我想在C#中缩小变量的范围,我可以引入额外的括号 - 即:
class Program
{
static void Main(string[] args)
{
myClass x = new myClass();
x.MyProperty = 1000;
Console.WriteLine("x = " + x.MyProperty);
{
myClass y = new myClass();
y.MyProperty = 2000;
Console.WriteLine("y = " + y.MyProperty);
}
myClass y2 = new myClass();
y2.MyProperty = 3000;
Console.WriteLine("y2 = " + y2.MyProperty);
}
class myClass
{
public int MyProperty { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
在ide中,我不能再在新大括号引入的范围之外引用y.我原以为这意味着变量y可用于垃圾收集.
(有趣的是,当使用反射器查看编译后的代码时,无论是否有额外的大括号,都没有区别)
使用VB.net时是否有类似的方法缩小范围?这对内部作用域中定义的变量何时可能被垃圾收集有影响吗?
我来自C#背景,但我现在主要使用VB.Net.在我看来,上述功能(以及其他功能 - 例如UCase,LCase)等是VB6及之前的结转.这些功能的使用是否在VB.Net中不受欢迎,还是纯粹归结为个人偏好?
我个人的偏好是远离他们,但我想知道这是否只是我的C#偏见.
我遇到了一些问题 - 特别是从VB6转换为VB.Net的代码,其中集合的索引已经意味着错误已经被引入到代码中,因此我对它们持谨慎态度.