我无法弄清楚为什么这个If语句不起作用.
if (textBox2.Text.Contains(".xwm") && textBox4.Text.Contains(".xwm") == true)
{
textBox4.Text.Replace(".xwm", ".wav");
}
else if (textBox2.Text.Contains(".wav") && textBox4.Text.Contains(".wav") == true)
{
textBox4.Text.Replace(".wav", ".xwm");
}
Run Code Online (Sandbox Code Playgroud)
它应该做的是将textBox4中的文件扩展名替换为相反的文件扩展名,在这种情况下我正在制作一个XWM到Wav转换器.因此,如果textbox2和textBox4包含相同的文件扩展名,它会将textBox4中的文件扩展为另一种文件类型.
为什么它不起作用.
PS:我是C#的菜鸟,所以尽可能地向一个菜鸟解释它
字符串是不可变的,这意味着,你必须改变它们的方式是重新分配它们.
textBox4.Text = textBox4.Text.Replace(".wav", ".xwm");
Run Code Online (Sandbox Code Playgroud)
一种知道的方法是查看函数的(替换)原型,它返回一个字符串,所以这可能意味着实例,即:textbox4.text不会被改变.
你正在调用Replace一个字符串,但是没有对结果做任何事情.字符串在C#中是不可变的 - 任何听起来可能正在改变字符串的方法实际上只返回对新字符串的引用(或者如果不需要更改则可能引用旧字符串).所以调用Replace(或类似的方法)然后忽略结果总是毫无意义的.
我怀疑你想要:
textBox4.Text = textBox4.Text.Replace(".xwm", ".wav");
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我也摆脱了== true,并且很可能提取对文本框的所有读取访问:
// Rename these as appropriate - and rename the textBox* variables so the names
// explain the purpose.
string source = textBox2.Text;
string target = textBox4.Text;
if (source.Contains(".xwm") && target.Contains(".xwm"))
{
textBox4.Text = target.Replace(".xwm", ".wav");
}
else if (source.Contains(".wav") && target.Contains(".wav"))
{
textBox4.Text = target.Replace(".wav", ".xvm");
}
Run Code Online (Sandbox Code Playgroud)
(我怀疑有更好的方式来表达你想要实现的目标,但目前我们还不知道那是什么......)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |