C#基础温习(2):温习控制台程序(二)

前面文章我介绍了有关控制台应用程序的一些理论内容,这一节我用来写一些实例,知道了原理不练是不行的,下面我分写一些实例供大家练习参考。

实例1:读取输入数据并实现简单的加减乘除

直接上代码:
using System;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个字符串:");
            string strRead = Console.ReadLine();
            Console.WriteLine("你输入的字符串是:" + strRead);
            Console.WriteLine("请输入一个数:");
            double num1 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入另一个数:");
            double num2 = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("你输入的数分别是:"+"num1="+num1+";"+"num2="+num2);
            Console.WriteLine("num1+num2="+(num1+num2));
            Console.WriteLine("num1×num2=" + (num1 * num2));
            Console.WriteLine("num1÷num2="+(num1/num2));
            Console.WriteLine("num1-num2="+(num1-num2));
            Console.ReadKey();
        }
    }
}
下面是运行效果图: 加减乘除demo  

实例2:C#实现数据序列化(json格式)

代码:
using System;
using System.Web.Script.Serialization;

namespace Serializer
{
    class Program
    {
        static void Main(string[] args)
        {
            Person person=new Person();
            person.Name = "木杉";
            person.Id = "1";
            JavaScriptSerializer serializer=new JavaScriptSerializer();
            string strSerializer = serializer.Serialize(person);
            Console.WriteLine("person序列化成json格式的结果是:");
            Console.WriteLine(strSerializer);
            Console.WriteLine("strSerializer反序列化的结果是:");
            Person dePerson = serializer.Deserialize<Person>(strSerializer);
            Console.WriteLine(dePerson.ToString());
            Console.ReadKey();
        }
    }

    internal class Person
    {
        public string Id { set; get; }
        public string Name { set; get; }
        public override string ToString()
        {
            return "反序列化后成为对象,然后直接转化现在的呈现形式:Name=" +this.Name+ "Id=" + this.Id;
        }
    }
}
运行结果: 序列化1   Note:1.在这个demo中我们需要注意JavaScriptSerializer是在System.Web.Script.Serialization命名空间下,使用前需要先添加引用到我们的项目,然后我们才可以直接使用。而System.Web.Script.Serialization命名空间在引用dll的时候应该引用System.Web.Extensions.dll;我用的是Visual Studio 2010可是引用后报错了,如下: 错误提示   具体是什么问题请参考:.NET Framework 4 与 .NET Framework 4 Client Profile,解决了以后我们的运行结果如上。 2.可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。 把我们的实体类改成如下格式:
    internal class Person
    {
        [ScriptIgnore]
        public string Id { set; get; }
        public string Name { set; get; }
        public override string ToString()
        {
            return "反序列化后成为对象,然后直接转化现在的呈现形式:Name=" +this.Name+ "Id=" + this.Id;
        }
    }
运行结果变成: 运行结果     note:如果想了解Person类的修饰符,请参考:详解C#防访问修饰符:public,private,protected,internal

实例3:另一种方式C#实现数据序列化(json格式)

 
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

namespace Json
{
    class Program
    {
        static void Main(string[] args)
        {
            Person person=new Person();
            person.Id = "1";
            person.Name = "木杉";
            DataContractJsonSerializer json=new DataContractJsonSerializer(person.GetType());
            string strJson = string.Empty;
            using (MemoryStream stream=new MemoryStream())
            {
                json.WriteObject(stream,person);
                strJson = Encoding.UTF8.GetString(stream.ToArray());
            }
            Console.WriteLine("person序列化后的结果是:");
            Console.WriteLine(strJson);
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(strJson)))
            {

                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));

                Person p = (Person)serializer.ReadObject(ms);

            }
            Console.WriteLine("strJson反序列化后的结果是:");
            Console.WriteLine(person.ToString());
            Console.ReadKey();

        }
    }
    [DataContract]
    internal class Person
    {
         [DataMember(Name = "id")]
         public string Id { set; get; }
         [DataMember(Name = "name")]
        public string Name { set; get; }
        public override string ToString()
        {
            return "反序列化后成为对象,然后直接转化现在的呈现形式:Name=" + this.Name + "Id=" + this.Id;
        }
    }
}
结果: 结果2   Note:运行前需要添加 System.Runtime.Serialization.dll和System.ServiceModel.dll,System.ServiceModel.Web.dll这样才可以正常运行。 代码需要多多练习我们才能熟悉,因此写了几个简单的实例,希望朋友们能写更多的实例去熟练语言。

转载于:https://www.cnblogs.com/vsdot/archive/2013/04/12/3263333.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值