C#占位符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_14884161/article/details/50992143

之前学习的是C#2.0,今天找了一本C#5.0的书翻了一下。

才知道还有自动属性和计算属性,程序学习果然不进则退。

照书上的要求写了个代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 属性2计算属性和自动属性
{
    class Program
    {
        static void Main(string[] args)
        {
            Contact c = new Contact();
            c.FirstName = "t";
            c.SecondName = "lu";
            c.DateOfBirth = new DateTime(1994, 12, 8);//注意
            Console.WriteLine(c.ToString());
            c.Search(37.344f, 44.4f);
            c.Search(37.344f, 44.4f,50);
            c.Search(37.344f, 43.4f,50,"len");
            Console.WriteLine(c.VerifyEmailAddress("joe@example.com"));
            Console.WriteLine(c.VerifyEmailAddress("jie@example.com"));

            Console.ReadKey();
        }
    }
}
contact类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 属性2计算属性和自动属性
{
    class Contact
    {
    //    private string firstname;
    //    private string secondname;
        private DateTime dateofbirth;

        public DateTime DateOfBirth
        {
            set { this.dateofbirth = value; }
            get { return this.dateofbirth; }
        }

        public string FirstName//自动属性,没有支撑字段 private string firstname;
        {
            get;//自动属性格式
            set;
        }

        public string SecondName
        {
            get;
            set;
        }

        public string FullName//计算属性,该属性是只读的,同时没有支撑字段
        {
            get { return FirstName + " "+SecondName; }
        }

        public override string ToString()
        {
            StringBuilder stringBudier = new StringBuilder();
           // stringBudier.AppendFormat("name:{0}{1}\r\n", this.firstname, this.secondname);
            stringBudier.AppendFormat("name:{0}\r\n", this.FullName);//属性的使用
            stringBudier.AppendFormat("date of birth:{0}\r\n", this.DateOfBirth);//属性的使用
            return stringBudier.ToString();
        }

        public bool VerifyEmailAddress(string emailAddress)
        {
            string baseMail = "joe@example.com";
            if (baseMail==emailAddress)
            {
                return true;
            }
            return false;
        }

        public void Search(float latitude,float longitude)
        {
            Search(latitude, longitude, 10, "en-us");
        }

        public void Search(float latiude,float longitude,int distance)
        {
            Search(latiude, longitude, distance, "en-us");
        }


        public void Search(float latiude, float longitude, int distance,string cultre)
        {
            /*Console.Write("latitude:{0}", latiude);
            Console.Write("longtidue:{0}", longitude);//
            Console.Write("distance:{0}", distance);
            Console.WriteLine("culture:{0}", cultre);*/
            Console.WriteLine("latitude:{0},longtidue:{1},distance:{2},culture:{3}", latiude, longitude, distance,cultre);
        }
    }
}

在最后一个search上报错了,之前一直说格式不匹配。

然后我 懵了很久

才发现之前是这样写的

 Console.WriteLine("latitude:{0},longtidue:{1},distance:{3},culture:{4}", latiude, longitude, distance,cultre);

看出来区别了么,就是占位符从1,跳到3了。

后来有进行实验,发现这个格式符只能从0开始,你是1,2,3,4就不行。

有一个字符就也得从0开始。

之前一直以为数字是装样子的。。

看来编译器是靠数字来匹配的。

内部原理不知道,后面看看clr再来更新。


没有更多推荐了,返回首页