C# 学习笔记 20240704

字符串加法运算
string s1 = "Hello", s2 = "world", res;
            res = s1 + s2;
            MessageBox.Show(res);

结果

Helloworld

string s1 = "1", s2 = "2", res;
            res = s1 + s2;
            MessageBox.Show(res);

结果

12

数组

数组的声明

需要用到new 关键字

//声明没有元素的数组
    int[] ints=new int[10];
//声明初始化有元素的数组
    int[] ints2=new int[] { 1, 3, 4, 5 };
//在声明初始化有元素的数组时,也可以指定数组大小
    string[] strings = new string[5] {"1","2","3","4","5"};
转换

(int)5.21//输出5

Int.Parse():只支持String类型转成int,括号内必须是string类型

string st="5.21";
double n=5.21;
Int.Parse(st);//输出5
Int.Parse(n);//报错

Convert.ToInt32(double value),遵循四舍五入,但当value为两个整数中间的数时,返回两者中偶数。
Convert.ToInt32(null)会返回0而不产生任何异常,Int.Parse(null)会产生异常。

函数

参数修饰符//类似于c中形参实参

无修饰符:按值进行传递,一份副本。

out:输出参数由被调用的方法赋值,按引用传递。最大用途是用一次方法的传递可以获得多个返回值。

 private void Form1_Load(object sender, EventArgs e)
        {
            string res=SellHouse(100, 100,out string wantprice);
            MessageBox.Show(res);
            MessageBox.Show(wantprice);
        }
        public string SellHouse(int area,int price,out string wantprice)
        {
            wantprice = "愿意出价" + (area * price - 1);
            return "张三想买这套房" ;
        }

张三想买这套房

愿意出价9999

ref:调用者赋初值,并且可以由被调用的方法可选的重新赋值(数据按引用传递),如果被调用的方法未能给ref参数赋值,也不会有编译器错误。

out和ref区别

out修饰的参数必须在方法内修改,ref也可以不修改。

out在传参时,参数是局部变量时可以不对其赋值,因为out一定会对参数赋值。

ref修饰的参数,在实参必须有初始值才能调用,因为ref不一定会对其进行赋值。

面向对象编程

一般思维为面向过程编程,但难以应对较为复杂的情况。

类:造车的图纸 对象:图纸造出来的车

属性:通常为具备的特征 方法:通常为行为,动词

声明一个类需要用到class关键字。

属性在c#中较为独特,它既不同于方法,也不同于字段。

属性最常见写法:public int Age{get;set;} 若属性中有get关键字,说明可以获取该属性的值;若属性中有set关键字,说明可以向该属性设置值。

在C#中万物皆对象,string person=new Person() ×; string本身也是一个类,应当用Person类型去定义一个变量才能去接受Person类型,Person person=new Person() √;

访问修饰符

静态的属性方法通过static关键字修饰,静态的属性可以通过类型直接获取,非静态必须通过实例化对象获取。

一般情况类型无需静态修饰,只有当类型中存在拓展方法才需要。(了解即可)

ArrayList(集合)

是.Net FrameWork提供的用于数据存储和检索的专用类,是命名空间System.Collections下的一部分。

ArrayList的大小是按照其中存储的数据来进行动态扩充和收缩的,故在声明ArrayList时不需要指定他的长度,可以很方便的进行数据添加、插入和移除。

 ArrayList arrayList= new ArrayList();
            //将数据新增到集合结尾处
            arrayList.Add("abc");
            arrayList.Add(123);
            //修改指定索引处的数据
            arrayList[2] = 345;
            //移除指定索引处的数据
            arrayList.RemoveAt(0);
            //移除内容为123的数据
            arrayList.Remove(123);
            //在指定索引处插入数值
            arrayList.Insert(0, "hello world");
ArrayList劣势

在存储数据时使用object类型 (所有的类的父类,父类可以接收子类的数据)。

不是类型安全的,使用时很可能会出现类型不匹配的错误。

就算都有插入同一类型的数据,但在使用时候,我们也需要将它们转化为对应的原类型来处理。

其存储存在装箱和拆箱操作,导致其性能低下。

装箱与拆箱的概念

装箱就是将比如int类型或string等不同的对象通过隐式转换赋给object对象。

int i = 123object o = i;

拆箱就是将object对象通过显式转换赋给int类型的变量。

object o =123int i =int)o ;

装箱与拆箱过程会产生较多的性能损耗,正式因为ArrayList存在不安全类型与装箱拆箱的缺点,所以在C#2.0后出现了泛型的概念。(限制集合只能存储单一类型数据的一种手段)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值