2011-12-30 16 views
-2

我有以下变量:如何加入字符串变量时有些可能为null?

ac, pr, pa, co and it 

所有这些都是字符串变量和一些可能为空。

有没有一种方法可以创建一个名为pk的新变量,它是所有这些变量内容的组合。我想简单地说:

var pk = ac + pr + pa + co + it; 

但是这会是一个问题,如果一些varibably为空。我不确定在向字符串添加空变量时会发生什么。

+2

我必须问,你为什么不试试?简单地将一些变量设置为null,然后显示结果为System.Windows.Messagebox()。 – 2011-12-30 05:45:57

+1

你试过了吗?你的猜测在极简测试程序中工作得很好。 – chaosTechnician 2011-12-30 05:50:13

+0

-1拿起关于C#编程的好书,这将是更好的方式来与这个概念性的东西前进步调 – 2011-12-30 06:01:39

回答

6

空字符串将连接成空字符串。试试看:

string a = null; 
string b = null; 

var x = a + b; 
var y = string.Concat(a, b); 

这是一个string.Concatdocumented feature,以及使用字符串+运算符,其中空参数将转换为空字符串C# 4 language specification第7.8.4。

+0

使用Concat有没有优势?有没有x和y可能不一样的情况?对不起,如果这听起来像一个愚蠢的问题,但我只是想确定。谢谢。 – 2011-12-30 05:46:51

+1

表达式'var x = a + b;',其中'a'和'b'是字符串,编译成'string.Concat'的调用。我展示了它的明确调用,但并不是绝对必要的。 – 2011-12-30 05:48:28

+0

注意:顺便说一句,我在前面的陈述中有些犯错。 'a' *或*'b'必须是一个字符串。也就是说,'var x =“hello”+ 1;'也是一个字符串连接。另一个操作数将被视为“对象”(其中包含一个值类型),并应用相同的规则。如果它是空引用,则替换空字符串。否则,该对象上的ToString()的结果将用于并置。 – 2011-12-30 06:04:28

1

如何使用String.Format();

String result=String.Format("{0}{1}{2}{3}{4}{5}",ac,pr,pa,co,and,it) 
+0

为什么这与问题中显示的'+'运算符有什么不同? – 2011-12-30 05:45:06

+0

通过我对这个问题的理解,'和'不是一个变量名,它只是“和”这个词。 – chaosTechnician 2011-12-30 05:46:19

+0

@Cody Gray,我不知道哪一个是不同的或更好的,但是从C++背景切换后,我发现使用String.Format()可以很容易地做到这一点。 – crypted 2011-12-30 06:17:54

1

不会有任何问题。

如果一个变量为null,它将简单地转换为“”,所以一个空字符串。

如果你有以下几点:

string a = "->"; 
string b = null; 
string c = "<-"; 

而且你要他们加在一起,像这样:

var result = a + b + c; 

结果只会是

- > < -

1

如果向另一个添加(附加)空字符串,那很好。在这种情况下,空字符串将被转换为空字符串。

相关问题