PS:本系列笔记将会记录我此次在北京学习Unity开发的总体过程,方便后期写总结,笔记为日更。
笔记内容均为 自己理解,不保证每个都对。
C#笔记未按照难度排列
Part 1 结构体的定义:
在 C# 中,结构体是值类型数据结构。它使得一个单一变量可以存储各种数据类型的相关数据。struct 关键字用于创建结构体。结构体是用来代表一个记录。假设您想跟踪图书馆中书的动态。
定义结构体:必须用到Struct属性
基本格式为:
struct 结构体名
{
结构体属性
结构体方法(选填)
}
例如定义一本书的结构体:
struct Book
{
public string bookName; //书名
public string bookAuthor; //作者
public string bookSubject; //科目
public string bookID; //编号
public void Print()
{
Console.WriteLine("bookID = {0} bookName = {1} bookAuthor = {2} bookSubject = {3}", bookID, bookName, bookAuthor, bookSubject);
}
}
结构体的使用:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FREE_TEST2_2019_08_08
{
struct Book
{
public string bookName; //书名
public string bookAuthor; //作者
public string bookSubject; //科目
public string bookID; //编号
public void Print()
{
Console.WriteLine("bookID = {0} bookName = {1} bookAuthor = {2} bookSubject = {3}", bookID, bookName, bookAuthor, bookSubject);
}
}
class Program
{
static void Main(string[] args)
{
Book bookA;
Book bookB;
bookA.bookName = "The Magic Stone";
bookA.bookAuthor = "JR";
bookA.bookSubject = "Magic";
bookA.bookID = "ISBC201908081510";
bookB.bookName = "The Deathly Hallows";
bookB.bookAuthor = "JR";
bookB.bookSubject = "Magic";
bookB.bookID = "ISBC201908081511";
bookA.Print();
bookB.Print();
Console.ReadLine();
}
}
}
输出结果为
Part 2结构体与类
若把刚刚书的结构体用 类表示 则代码为:
class BookClass
{
public string bookName; //书名
public string bookAuthor; //作者
public string bookSubject; //科目
public string bookID; //编号
public BookClass()
{
}
public BookClass(string bookName, string bookAuthor, string bookSubject, string bookID)
{
this.bookName = bookName;
this.bookAuthor = bookAuthor;
this.bookSubject = bookSubject;
this.bookID = bookID;
}
public void Print()
{
Console.WriteLine("bookID = {0} bookName = {1} bookAuthor = {2} bookSubject = {3}", bookID, bookName, bookAuthor, bookSubject);
}
}
区别:
结构体是值类型,类是引用类型
例如:
BookClass bookOne = new BookClass("The Magic Stone", "JR", "Magic", "ISBC201908081510");
BookClass bookTwo = new BookClass("The Deathly Hallows", "JR", "Magic", "ISBC201908081511");
bookOne.Print();
bookTwo.Print();
Console.WriteLine("=============================================================");
bookA = bookB;
bookB.bookName = "The Order of the Phoenix";
bookA.Print();
Console.WriteLine();
bookOne = bookTwo;
bookTwo.bookName = "The Order of the Phoenix";
bookOne.Print();
Console.WriteLine("=============================================================");
测试结果为:
很明显发现
对结构体而言, 当赋值后 bookB发生改变时,bookA的属性不变
对类而言 ,当赋值后bookTwo发生改变时,booKOne的属性随着改变