2013-03-02 23 views
2

这个问题真的不难理解。我一直在想这个,想知道如果可能的话,怎么可能做到。嗯,这是有点我想要做的,如果可能的:我怎样才能创建一个字符串中的对象值?

int number = 50; 
    string text = "The number is %number"; 

凡我在上面写道:string%数量,我想的number价值被插入到string,因为我通常会去这样做这样的事情的方法是这样的:

int number = 50; 
    string text = "The number is " + number.ToString(); 

哪个是的,我的方式集成到number以上string是这样做的一个不错的方式,但我有一个总是想知道,是否有可能做一些事情,比如我写的第一个例子,把object的值放到string中,你所要做的就是写一些类型的characterstring(用于参考object),以及object的名称转换为string以获得string的结果,其中的值为object?或者有什么可以做的吗?

+0

只需要注意,大多数(所有?)情况下,当您执行简单字符串连接时,只需添加它们而不显式调用'ToString()'或使用'String.Format'。例如:'string text =“数字是”+数字;'就足够了。 – 2013-03-02 19:34:45

+1

@ChrisSinclair为了提供一个不起作用的例子,'string text = currency + amount +'成功传输了。“;''currency'和'amount'都不是编译时类型' string'。然后编译器会抱怨操作符'+'不能用于'MyNamespace.Currency'和'decimal'类型(例如)。一个丑陋的解决方案可能是'string text = currency +(amount +“已成功转移。”);'。可能这不是一个现实的例子。 – 2013-03-02 21:20:42

+0

@JeppeStigNielsen好想法。我没有考虑将两个非字符串按顺序组合在一起。如果字符串文字部分碰巧第一('string text =“传输成功:”+ currency + amount;'),它会正常工作。猜猜它表明这种情况是多么的罕见(或者更可能的是,它们足够平凡以至于我无法真正想起它们) – 2013-03-02 23:22:37

回答

5

你会使用string.Format

string text = string.Format("The number is {0}", number); 

注意,所有对象都有ToString方法,这意味着所有的对象都可以作为参数string.Format,但是从ToString默认响应是返回全名类型,这可能没有多大意义。

举例来说,这样的:

public class Dummy 
{ 
} 

var d = new Dummy(); 
string text = string.Format("The dummy is {0}", d); 

将分配类似以下值text

"The dummy is Your.Namespace.Dummy"; 

你有两个选择:

  1. 覆盖ToString,并返回有意义的事为您的新型
  2. 读出的属性或东西代替,例如:

    string text = string.Format("The dummy is {0}", d.SomeProperty); 
    

还要注意的是string.Format可以采取多个参数:

int a = 10; 
int b = 20; 
int c = a + b; 
string text = string.Format("{0} + {1} = {2}", a, b, c); 

有很多比我在这里显示更多的string.Format ,所以点击文档链接(此答案的第一行)了解更多信息。

+0

非常感谢,我真的很感谢你的回答和其他人的回答。你很快回复,我真的很感激。 'string.Format'肯定会派上用场。我只希望有更快的写作方式,我不想懒惰,我宁愿节省编写代码的时间。再次感谢。 :) – Jake 2013-03-02 19:27:20

0

你可能需要检查Sting.Format

string text = String.Format("The number1 is {0},number2 is {1}", number1, number2); 

还值得一检查有关this讨论当是它更好地使用字符串。格式vs字符串连接? `

相关问题