【从Java转C#】第三章:对象和类型 红太狼 2022-11-21 01:13 144阅读 0赞 ### 目录 ### * * 对象和类型 * * ref和out * 参数的使用 * 方法的重载 * 属性 * 构造函数 * 匿名类型 * 结构【Struct】 * 弱引用(WeakReference) * 静态类 * Object ## 对象和类型 ## ### ref和out ### * 双方都可以改变原始的地址 * 初始值的不同 * ref:需要赋予变量初始值 * out:不需要赋予变量初始值 namespace ConsoleApp1 { class Program { static void Main(string[] args) { int i = 1; int j = 1; Swap(ref i, j); Console.WriteLine("i : " + i); Console.WriteLine("j : " + j); Console.ReadLine(); } static void Swap(ref int i, int j) { i = 100; j = 101; } } } ### 参数的使用 ### * 命名参数:可以自己改变形参的顺序 Swap(lastName: "lastName", firstName: "firstName"); static void Swap(string firstName, string lastName) { Console.WriteLine(firstName); Console.WriteLine(lastName); } * 可选参数:参数是可以选择的,但是可以选择的函数【可用可不用】必须在定义的参数后 static void Swap(string lastName, string firstName = "231") { Console.WriteLine(firstName); Console.WriteLine(lastName); } ### 方法的重载 ### * 方法名相同、参数的个数或类型不同、同一个类中 * C\#限制 * 两个方法不能**仅在返回类型**上有区别 * 两个方法不能根据参数是声明为**ref还是out**来区分 void display(string name1) { // ***** } void display(string name1, string name2) { // ***** } ### 属性 ### * 正常的get/set class student { private int _age; public int Age { get { return _age; } set { _age = value; } } } * 自动的实现:用于没有任何逻辑,单单实现功能而已 class student { private int _age; public int Age { get; set; } } ### 构造函数 ### * 不书写任何的构造函数:引用类型:空引用、数值类型:0、bool:false student st = new student(); Console.WriteLine(st.age); class student { public int age; } * 书写带参的构造函数:在进行实例化时,就要实现带参 * this:一般使用this来代表当前的属性 class student { public int age; public student(int age) { this.age = age; } } * 静态构造函数:构造函数只执行一次,只要创建类的对象,就会执行它 class student { public int age; static student() { // write your code } } * 构造函数调用其他的构造函数:有点方便~但我感觉多了容易乱、对于父类的调用,使用base class student { private int age; private string name; public student(int age, string name) { this.age = age; this.name = name; } public student(int age) { this.age = age; this.name = "黄良帅"; } } ======================================分割线================================= class student { private int age; private string name; public student(int age, string name) { this.age = age; this.name = name; } public student(int age):this(age, "黄良帅") { } } * 只读字段【readonly】:可以在构造函数中给其赋值,但不能在其他地方赋值 readonly int a = 1; a = 2; // 错误,找不到a public student() { a = 2; } ### 匿名类型 ### * new的一样,Type就一样 var captain = new { firstName = "hls", lastName = "s" }; var doctor = new { firstName = "s", lastName = "s" }; Console.WriteLine(captain.GetType()); Console.WriteLine(doctor.GetType()); * 也可以直接实例化对象 var capion = new student(); ### 结构【Struct】 ### * 结构的特点 * 结构是值类型,不是引用类型 * 结构不支持继承 * 对于结构,构造函数的工作方式有一些区别。尤其是编译器总是提供一个无参数的默认构造函数,它是不允许被替代的。 * 使用结构,可以指定字段如何在内存中布局 * 结构和类 * 相同 doctor doc; student stu; =============分割线========== doctor doc = new doctor(); student stu = new student(); * 不同 doctor doc; student stu; =============分割线========== doc.age = 1; stu.age = 1; // 错误:对于类来说,没有new【引用】,不能直接赋值 ### 弱引用(WeakReference) ### * 个人感觉这一块和Java的GC回收差不多,基本参考强弱软虚 * 这里等看了C\#的垃圾回收再来填坑 ### 静态类 ### * 如果类只包含静态的方法和属性,这个类就是静态的 * 一旦类被static修饰后,就不能使用实例创建 student stu = new student(); // 会报错 static class student { public int age; public string name; } ### Object ### * **ToString** 虚方法 * **Equals** * **GetHashCode** * **GetType** * **MemberwiseClone** 复制对象
相关 深度探索C++对象模型【第三章2】 1:通过对象指针还是对象来存取数据成员之间的差异: 当该类是一个派生类,且其继承链中有一个虚基类存在,并且存取的member成员是一个从该虚基类中继承而来的成员时,就会 朴灿烈づ我的快乐病毒、/ 2023年10月17日 16:43/ 0 赞/ 78 阅读
相关 C++第三章 vector 的初始化以及使用。 include<bits/stdc++.h> using namespace std; int main(){ た 入场券/ 2023年05月31日 03:15/ 0 赞/ 35 阅读
相关 第三章 Java面向对象(下) 目录 3.1、抽象类 3.2、接口 3.3、内部类 3.4、方法进阶 3.4.1、类作为方法形参 爱被打了一巴掌/ 2023年02月28日 15:17/ 0 赞/ 2 阅读
相关 【从Java转C#】第八章:委托、lambda、事件 目录 委托、lambda表达式、事件 委托【Delegate】 简介 声明委托 实例化委 朴灿烈づ我的快乐病毒、/ 2022年12月19日 06:12/ 0 赞/ 153 阅读
相关 【从Java转C#】第七章:运算符和类型强制转换 目录 运算符和类型强制转换 运算符 条件运算符 类型的安全性 隐式转换:自动的进行 柔情只为你懂/ 2022年12月19日 00:54/ 0 赞/ 37 阅读
相关 【从Java转C#】第四章:继承 > 欢迎关注我的公众号“爱敲代码的小黄”,一起努力,一起学习! 目录 继承 继承的类型 实现继承 接 叁歲伎倆/ 2022年11月21日 06:55/ 0 赞/ 182 阅读
相关 C++primer第4版第三章标准库类型 > Talk is cheap, show me the code. 1. 包含文件加不加.h后缀的区别:C语言中的头文件都是包含.h的,比如stdio.h,iostrea 红太狼/ 2022年07月14日 07:13/ 0 赞/ 210 阅读
还没有评论,来说两句吧...