【Unity学习笔记-----C#学习】

已经有了c++和java的基础,就做一个小记录不同的地方这里。

1.数据类型,变量,常量,数组

  1. sbyte类型就是8位有符号整数类型,byte是8位无符号整数类型。
  2. 值类型存储在栈中,引用类型引用的数据存储在堆中。
  3. object是最终的父类型,string类型表示0或更多Unicode字符组成的序列。
  4. 变量命名时,可以定义string @char; 通过前缀@可以命名关键字的变量。
  5. object objNum = (object)intNum; // 将值类型转换为引用类型也可以使用Convert.Toxxxx的强制类型转换方法。
  6. 引用类型转换为值类型:
            object objA = 15;
            int intGetObjA = (int)objA; //方法1
            int intGetObjA1 = Convert.ToInt32(objA); //方法2, 强制类型转换
  1. 装箱:把值类型包装成引用类型的处理过程;拆箱:把值类型转换成引用类型。注意:装箱可以隐性转换,但拆箱必须强制类型转换
  2. 定义变量:

            long l = 32L;
            uint unitA = 10u;
            int intA = 0x10;
  1. 单问号作为基本数据类型声明变量的标识符int? i = null;
  2. var mm = "hello; 类似于C++的auto
  3. 整型数组定义int[6] arrayHere;,也可以定义为:int[] intScore={1,2,3,4,5};数据存储在堆当中。

数组扩容
数组缩容也是同样的道理。

int[] arrS = new int[4] {1,2,3,4};
int[] tmp = new int[arrS.Length + 1];
for (int i=0;i<arrS.Length;i++){
tmp[i] = arrS[i];
}
arrS = tmp;

2.ArrayList

  1. 首先需要using System.Collections引用集合的命名空间
            ArrayList arrayList = new ArrayList();
            arrayList.Add(1);
            arrayList.Add(20);
            arrayList.Add(3);
            arrayList.Add(10);
            Console.WriteLine("数组的容量是:" + arrayList.Capacity); //输出数组可包含的数量
            Console.WriteLine("数组的实际大小" + arrayList.Count);
            // 输出ArrayList元素时,有一个装箱的操作,每个放到ArrayList里的数组的元素都会转换为object类型存放
            foreach(object o in arrayList)
            {
                Console.WriteLine(o);
            }
            arrayList.Sort(); // 排序操作
            arrayList.Insert(0, 20); // 插入操作
            arrayList.Remove(1); // 删除值为1的元素
            arrayList.RemoveAt(0); // 删除索引为0的元素

3.字符串

            string strA = "ac";
            string strB = "bc";
            int intResult = strA.CompareTo(strB); // 按照字典排序规则,判断两个字符串相对大小 
            Console.WriteLine(intResult);

            // 查找子字符串的位置
            string strHello = "hello";
            int index = strHello.IndexOf('e'); // 也可以查找字串'llo' 类似的还有StartWith、EndWith方法

            string strFormat = string.Format("位置1:{0},位置2:{1}", 1, 2); // 格式化字符串
            Console.WriteLine(strFormat);

            //字符串的替换方法
            strHello = strHello.Replace('e', 'a');
            // 字符串转为大写或小写
            strHello.ToLower();
            strHello.ToUpper();

            // 连接字符串
            string str1 = "hello";
            string str2 = "world";
            string strNew = string.Concat(str1, str2);
            string strNew2 = string.Join(str1, str2,new char[] { '-' });
            string strN = str1 + str2; // 字符串拼接

            // 分裂字符串
            string strTest = "hell world my name is C#";
            string strTest2 = "张三,-李四=,王五";
            string[] strArrays = strTest.Split(' ');
            string[] strArrays2 = strTest.Split(new char[] { ',', '-', '=' }) ;

            //清空字符串里的空格Trim方法,清空字符串里全部空格
            string strT = "       aaa   ";
            strT.Trim(); //strT变成了"aaa"
            strT.TrimStart(); // strT变成了"aaa     ",同理还有TrimEnd()
            string.IsNullOrEmpty(strT); // 判断字符串是否为空


            // 日期操作
            DateTime dtime = DateTime.Now;
            string strTime = dtime.ToString("yyyy年MM月dd日 HH时mm分ss秒");

4.Class类

首先定义一个Student类

 public class Student
    {
        public string name;
        public int stuno;
        public int age;
        // 无参构造函数
        public Student()
        {

        }
        // 有参构造函数
        public Student(string _name,int _stuno,int _age)
        {
            this.name = _name;
            this.stuno = _stuno;
            this.age = _age;
        }

        // 方法
        public string Say()
        {
            string strResult = "这是说话方法的返回值";
            return strResult;
        }

        public string DoWork(string jobname)
        {
            string str = "我做的工作是:" + jobname;
            return str;
        }

        public void Do()
        {
            Console.WriteLine("这是student的do方法");
        }
    }

在main函数当中

            Student stu = new Student();
            Student stu2 = new Student("张三", 10010, 18);
            stu2.Say();
            stu2.Do();
            stu2.DoWork("eat");

方法中的参数的四种类型

  1. 值参数,不含任何修饰符
  2. 引用型参数,以ref修饰符声明
  3. 输出参数,以out修饰符声明
  4. 数组型参数,以params修饰符声明
  5. ref与out的区别是,前者在使用前必须赋值,后者修饰的参数可以赋值也可以不赋值

方法定义:

    class Person
    {
        public void ChangeAge( int age) // 值传递
        {
            age = age + 10;
        }
        public void ChangeAge2 (ref int age) // 引用传递
        {
            age += 10;
        }

        public void ChangeWeight(out double weight)
        {
            weight = 120;
        }
        public void ShowInfo(params int[] showages) // params表示是一个可变数组
        {
            foreach(int i in showages)
            {
                Console.WriteLine(i);
            }
        }
    }

方法引用:

            int age = 10;
            double weight;
            Person p = new Person();
            p.ChangeAge(age);
            p.ChangeAge2(ref age);
            p.ChangeWeight(out weight);
            int[] a = { 1, 2, 3, 4, 5 };
            p.ShowInfo(a);

== 静态字段和静态方法==

实例化的方法,可以访问静态字段,静态方法,也可以访问静态字段,静态类中不允许出现实例化的字段或方法

public static class OperatorMethod
{


}


  public static string Country;
        public static void ChangeCountry()
        {
            Person.Country = "美国";
        }
Person.ChangeCountry();

方法重载
就不说了

internal访问
internal表示能够在同一命名空间中访问.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞲_大河弯弯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值