Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中将对象另存为字符串#_C#_String_Object - Fatal编程技术网

C# 如何在c中将对象另存为字符串#

C# 如何在c中将对象另存为字符串#,c#,string,object,C#,String,Object,我有一个学生的目标 Class Student { public Student() { name = "xyz"; roll = 20; age = 16; } string name; int roll; int age; } Class Service { Student student = new Student(); string s = ??? // what I have to do for getting stri

我有一个学生的目标

Class Student
{
  public Student()
  {
     name = "xyz";
     roll = 20;
     age = 16;
  }
  string name;
  int roll;
  int age;
}

Class Service
{
  Student student = new Student();
  string s = ???
 // what I have to do for getting string like {"name" : "xyz", "roll" : 20, "age" :16}
}
我需要上面对象中的字符串

如果我序列化对象,我会得到一些转义序列

任何帮助都是值得感激的

这是一个简化的示例,请使用Vsevolod-Goloviznin回答。这样更好

只需使用toString()

向类中的toString()添加重载以获得漂亮的打印效果。我个人的偏好是输出JSON

Class Student
{
  public Student()
  {
     name = "xyz";
     roll = 20;
     age = 16;
  }


  public override string toString(){
     return "{name: " + name + ", roll: " + roll + ", age: " + age + "}";
  }

  string name;
  int roll;
  int age;
}

示例中的字符串是JSON。你可以用 要序列化:
字符串s=JsonConvert.SerializeObject(学生)

看起来您真正想要的是将对象序列化为
JSON

这可以通过以下库轻松完成:

Student student = new Student();
var s = JsonConvert.Serialize(student);
如果您在多个位置需要此功能,您可以创建扩展方法或覆盖
Student
类的
ToString
方法:

public class Student
{
     public override string ToString()
     {
          return JsonConvert.Serialize(this);
     }
}

您似乎想要将其序列化为JSON,签出并使用它调用
string s=JsonConvert.SerializeObject(student)

重写学生类的ToString()方法

差不多

public override string ToString()
{
    return string.Format("Name: {0}, Roll: {1}, Age: {2}", name, roll, age);
}

你必须序列化你的对象。例如,使用JavaScriptSerializer:

string s = new JavaScriptSerializer().Serialize(student);
别忘了添加以下内容

using System.Web.Script.Serialization;

在那里添加一个public override ToString()函数,您可以返回一个字符串,您可以根据需要对其进行格式化。听起来您只需要JSON。在Json.NET包中尝试
JsonConvert.SerializeObject
。否则,如果您试图漂亮地打印某些内容,只需将格式字符串与
string.format
一起使用即可。如果我添加了相同的格式字符串,它将返回Student@Magic-鼠标为什么不用String.Format呢?它使它更具可读性,但也更容易理解handle@chouaib我想我是太挑剔或太小心了。但我想,如果一个人不知道如何覆盖toString。我会尽可能使响应更基本,因此只使用concat字符串,而不是使用可能令人困惑的函数。不,这根本不会降低您的答案的价值,我只是觉得它比简单的格式更令人困惑,口味是不争的:)+对于覆盖部分:我自己学习了
String.Format
在我知道
override
是什么之前:)请不要预先判断,这里+1
@override
是一个java注释@satishkumarV只是在用C#表示字符串时,双引号被转义。如果您将其写入文件,斜杠将消失
using System.Web.Script.Serialization;