unity 知识体系 9.13

一、unity 基础

1、坐标系: 

左手坐标系

 右手坐标系

世界坐标系

局部坐标系 、

屏幕坐标系:GUI 左上角是(0,0)、UGUI 左下角是(0,0)

二、字符串

1、字符串属性
    .Length:获取字符串长度

  string str01 = "asdfsadf";  string str02 = "你好你好"  Console.WriteLine("asdfsadf字符段长度:" + str01.Length);  Console.WriteLine("你好你好:" + str02.Length);     //一个汉字占两位,字符串长度和占位无关


  2、 字符串常用方法
a.    IsNullOrEmpty(): 判断一个字符串是否为Null或者空


            //如果为null或者为空,返回真;否则返回假
            string str141 = "";//空字符串(“”)是占内存空间的
            string str151 = null;//null是不占空间的
            Console.WriteLine(string.IsNullOrEmpty(str141));
            Console.WriteLine(string.IsNullOrEmpty(str151));


 b.   大小写转换

      // ToUpper() 转大写字母
          string str1 = "adlalsdkfj";
Console.WriteLine(str1.ToUpper());
     // ToLower() 转小写字母
          string str2 = "ALKSDJFLKAJSDF";
Console.WriteLine(str1.ToLower());
            例子
            //输入一个字符,如果是大写字母则转换为小写字母
            //A的ASCII码是65,a的ASCII码是97
            int c1 = Console.Read();
            if(c1 >= 65 && c1 <= 91) //A~Z
            {
                c1 = c1 + 32;//大写转小写,-32则是小写转大写
                Console.WriteLine((char)c1);
            }


  c.  判断是否相等

            //用==判断
            string str331 = "12312";
            string str332 = "12312";
            if (str331 == str332)
            {
                Console.WriteLine("两个相等");
            }
            else
            {
                Console.WriteLine("两个不相等");
            }


         //   Equals()比较两个字符串是否相同,相同返回真,不相同返回假         常用
string str3 = "123";
string str4 = "123";
string str5 = "asdf";
Console.WriteLine(str3.Equals(str4));
Console.WriteLine(str3.Equals(str5));


         //   Compare()比较字符串是否相等,返回-1,0,1
string str1 = "123";
string str2 = "12345";
string str3 = "123456";
string str4 = "12345";
Console.WriteLine(string.Compare(str1, str2));//小减大为-1
Console.WriteLine(string.Compare(str3, str2));//大减小为1
Console.WriteLine(string.Compare(str2, str4));//相同0


        //    CompareTo():进行比较,并返回一个整数,该整数指示此实例的值是小于、等于还是大于
            string str11 = "撒旦飞";
            string str21 = "撒";
            string str31 = "撒旦飞";
            string str41 = "撒旦飞撒旦飞";
            Console.WriteLine(str11.CompareTo(str21));//不相同 1
            Console.WriteLine(str11.CompareTo(str31));//相同 0
            Console.WriteLine(str11.CompareTo(str41));//不相同-1


 d. Substring(index,number):截取字符串,返回截取后的子串

//从第index位后(注意这个后),截取number个字符
string str61 = "你好呀,我是张三,你是谁呀?";
Console.WriteLine(str61.Substring(0, 1));//你
Console.WriteLine(str61.Substring(2, 1));//呀(第二位【呀】取一个)
Console.WriteLine(str61.Substring(2, 2));//呀,


 e.  Split():分割字符串,返回字符串类型的数组

string str51 = "账号-kub11-密码-123456";
string[] strArr = str51.Split('-');//注意里面填的是字符
foreach(string item in strArr)
{
    Console.WriteLine(item);
}


 f.    Replace("旧字符串","新字符串"):将字符串中的某个字符串替换成一个新的字符串。


     //返回新的字符串。
string str111 = "asdfsdfsdf";
Console.WriteLine(str111.Replace("fs", "你好"));
        Insert(n,*):插入字符串(第n位后面插入*)
          string str141 = "asdfsadfasdf";
            Console.WriteLine(str141.Insert(3, "-"));//输出“"asd-fsadfasdf"


     g.   Remove(n):移除字符串(移除第n位后面的字符串)

            string str1 = "123456789";
            string str2 = str1.Remove(5);
            string str3 = str1.Remove(1);
            Console.WriteLine(str2);//输出:12345
            Console.WriteLine(str3);//输出:1


     h.   Copy()复制字符串

          string str98 = "asdfasdf";
            Console.WriteLine(string.Copy(str98));


       i.   CopyTo():复制到

            string strSource = "changed";
            char[] destination = new char[20];
            strSource.CopyTo(0, destination, 0, strSource.Length);
            //sourceIndex Int32 要复制的此实例中第一个字符的索引。
            //destination Char[] 此实例中的字符所复制到的 Unicode 字符数组。
            //destinationIndex Int32 destination 中的索引,在此处开始复制操作。
            //count Int32 此实例中要复制到 destination 的字符数。
            foreach (var item in destination)
            {
                Console.WriteLine(item);
            }


     j.   拼接两个string对象

           string str71 = "asdf";
            string str72 = "你好呀";
            //拼接两个string对象1
            string str73 = str71 + str72;
            Console.WriteLine(str73);
            //拼接两个string对象2
            string str74 = string.Concat(str71, str72);
            Console.WriteLine(str74);


       k.  PadLeft(n,str3)填充字符串

       //(n:填充后的字符长度,str3所要填充的字符,如果省略,则填充空格符号)
            string str2 = "123";
            char str3 = 'J';
            str2 = str2.PadLeft(10, str3);
            Console.WriteLine(str2);


        l.   查找某字符在字符串中的索引

           IndexOf():查找某个字符串在字符串中第一次出现的位置。
                            //返回所在的索引位置值(索引从0开始)。如果没有找到,返回-1。
            string str81 = "qwertyyui";
            Console.WriteLine(str81.IndexOf("rt"));
            Console.WriteLine(str81.IndexOf("qw"));
            LastIndexOf():查找某个字符串在字符串中最后一次出现的位置。
                            //返回所在的索引位置值。如果没有找到,返回-1。
            string str82 = "qwertyyuiui";
            Console.WriteLine(str82.LastIndexOf("ui"));


        m.  StartsWith():判断是否以...字符串开始。


           //如果是,返回真;如果不是,返回假。
            string str101 = "asdfasdfsdfasdf";
            Console.WriteLine("as开头:" + str101.StartsWith("as"));
            Console.WriteLine("asf开头:" + str101.StartsWith("asf"));


        n.  EndsWith():判断是否以...字符串结束。

          //如果是,返回真;如果不是,返回假。
            string str102 = "asdfasdfsdfasdf";
            Console.WriteLine("as结束:" + str102.EndsWith("as"));
            Console.WriteLine("df开头:" + str102.EndsWith("df"));
        Contains():判断某个字符串中是否包含指定的字符串。
                        //如果包含返回真,否则返回假。
            string str121 = "123456789";
            Console.WriteLine("str121中是否存在45字符串:" + str121.Contains("45"));


        o. 去空格

           Trim():去掉字符串中前后空格。
                            //返回处理后的字符串。
            string str131 = " sdf s fda ssdf asd  sd ";
            Console.WriteLine(str131.Trim());//输出“sdf s fda ssdf asd  sd”


            TrimStart():去掉字符串开始前的空格。
                            //返回处理后的字符串。
            string str132 = " sdf s fda ssdf asd  sd ";
            Console.WriteLine(str132.TrimStart());//输出“sdf s fda ssdf asd  sd ”


            TrimEnd():去掉字符串结束后的空格。
                            //返回处理后的字符串。
            string str133 = " sdf s fda ssdf asd  sd ";
            Console.WriteLine(str133.TrimEnd());//输出“ sdf s fda ssdf asd  sd” 


     p.   格式化输出

//1、
string str1 = "1";
string str2 = "2";
string str3 = "3";
Console.WriteLine("{0}+{1}={2}", str1, str2, str3);
Console.WriteLine("{2}+{1}={0}", str1, str2, str3);
//2、
Decimal pricePerOunce = 17.36m;
String s = String.Format("The current price is {0} per ounce.", pricePerOunce);
Console.WriteLine(s);


     q.   四舍五入保留两位小数输出

            double point = 3.147;
            Console.WriteLine("\n四舍五入保留两位小数输出:" + point.ToString("0.00"));


     r.   StringBuilder

          1、  字符串构建器
          2、 stringbuilder 是一个类
          3、 创建
                StringBuilder sb = new StringBuilder();//创建一个对象    //.Append(5) 追加一个数据                                                           sb.Append(5);                                                                                        for(int i =0; i <=10;i++)                             {     sb.Append(i);  }Console.WriteLine(sb);                           //.ToString() 将sb转换为字符串形式                                            

         sb.ToString();  

        //.Clear():清空sb中的数据                                                                                                                 sb.Clear();

三、类与对象的关系

类用于描述一类事物的信息,对象是这个类中的一个具体的个体。

四、类的语法

[访问修饰符]  class  类名         {
类的描述信息;
      }

五、字段

1、字段是之前一直用的变量,变量在面向对象的类中就叫做字段
2、字段作用:和变量是一样的,都是用于存储一些具体的信息
3、字段的语法
        public 数据类型 字段名
        public:访问修饰符               数据类型:数据类型,如: int , string,float,double;       字段名:变量名,在面向对象编程的类中,变量就叫字段
4、字段的赋值与取值
        赋值:对象名.字段名 = 值;                        取值:对象名.字段名

六、属性

1、对字段进行保护,将属性设为public,可直接访问;属性保护的字段设置成private,通过属性间接的操作字段。
2、属性语法
public 数据类型 属性名 {  get{return 字段名:}       set{字段名 = value;}        }
数据类型:和要保护的字段的数据类型一样;
属性名:和字段名一样,只不过首字母要大写;
get:当通过属性名取值的时候,会自动调用get中的代码;
set:当通过属性名给字段赋值的时候,会自动调用set中的代码;
value:也是系统关键字,代表赋给属性的值;get和set本质上就是两个函数。

七、命名空间的语法

定义命名空间:namespace 空间名称 { 类 }
引入命名空间:using  空间名称

八、三种方法

1、普通方法
2、构造方法
        public  类名()
{
构造函数代码;
}
①构造方法要用public修饰,不能用private修饰;
②构造方法没有返回值,且连void也不能写;
③构造方法的方法名字必须跟类名一样;
④构造方法是可以有重载的。
当我们的类中不写构造方法的时候,在代码编译后,系统会自动给它添加一个空构造方法,如果我们写了一个构造方法,默认的“空构造方法”就不会存在。
 3、析构方法
        语法:   ~类名()
{
析构方法代码体;
}
①析构方法不能有任何参数;
②析构方法无返回值也无访问修饰符;
③析构方法由系统自动调用;
④析构方法可以不写。

九、面向对象的三大特性

1、继承,封装和多态
    继承:将一堆类中的一些共有的“成员”单独抽取出来,作为一个父类,然后这一堆类继承这个父类,共享父类的资源
   好处:①优化代码结构,让类与类之间产生关系(人不是孤立存在的,类也一样);
②提高代码的复用性,便于阅读(写更少的代码,干更多的活);
③为“多态”提供前提
   注意:1、子类继承父类私有部分,但是子类无法访问   2、c#不支持多继承     3、c#可以继承多个接口,接口之间用 , 隔开。


 类视图:没有怎么装
 工具-》获取工具和功能-》安装详细信息-》单个组件中勾选类设计器。
 UML视图:类名、字段、方法。
 子类继承父类中哪些:字段 、属性 、方法。
 私有变量/方法继承无法访问

十、设计模式中的六大原则

    1、单一职责原则   
        只做一件事,不会做其他不相关或者跨界的事情
    2、依赖倒置原则
        面向接口编程而不是面向实现编程,依赖于抽象,依赖于接口
    3、开闭原则
    4、接口隔离原则
        使用多个专门的接口比使用单一的总接口要好
    5、里氏替换原则
        父类存在的地方子类都可以替换,并且行为不发生改变
         A0 a0 = new A0();  A1 a1= new A1();  a0=a1;//子类对象可以直接赋值给父类变量
    6、合成复用原则
    7、迪米特原则

十一:抽象

抽象方法:
        使用abstract关键字2,无方法体,抽象方法必须存在于抽象类。
抽象类:
        抽象类中可以没有抽象方法
        抽象类不能被实例化

十二:接口

    c#不支持多继承但可以继承多个接口,用逗号隔开
    接口中无字段可有属性,方法是抽象方法不需要abstract关键字
    接口中的方法必须全部实现

十三、访问修饰符

    1.public[公开访问]公开的访问权限。当前类,子类,实例对象,都可以访问到。
    2.private[私有访问]私有的访问权限。只能在当前类内部进行访问使用;子类,实例对象,都访问不到。
    3.protected [保护访问]受保护的访问权限。只能在当前类的内部,以及该类的子类中访问;实例对象访问不到。
    4.internal[内部访问]只能在当前程序集(项目)中访问;在同一个项目中internal和public的访问权限是一样的。
    5.protected  internal[内部保护访问]protected+internal的访问权限。
    internal 【内部访问】    只能在当前程序集(项目)中访问;  在同一个项目中internal和public的访问权限是一样的
    能够修饰类的访问修饰符只有两个,public和internal,类的默认访问符是 internal
    类中的成员默认访问修饰符是private

十四、静态属性

被static关键字修饰的字段,叫做“静态字段”, 静态字段存储的数据在内存中只有一份;
静态类不能实例化对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值