Day 1 2024.9.20 初识C#
·类型/函数/方法
类型:定义一个变量的类型
如:
Console 控制台窗口
string 字符串
方法:对一个变量进行控制,但不作用于变量本身
如:
Trim方法:
string greeting = " Hello World! ";
Console.WriteLine($"[{greeting}]");
string trimmedGreeting = greeting.TrimStart();
Console.WriteLine($"[{trimmedGreeting}]");
trimmedGreeting = greeting.TrimEnd();
Console.WriteLine($"[{trimmedGreeting}]");
trimmedGreeting = greeting.Trim();
Console.WriteLine($"[{trimmedGreeting}]");
·打印/字符串内插
【方法】打印:WriteLine()
string aFriend = "Bill";
Console.WriteLine(aFriend);
用+联接不同内容
Console.WriteLine("Hello " + aFriend);
字符串内插
“xxx”双引号内原本为一整个字符串,但用大括号{}括起来的内容替换为变量值
方法1:注意{}大括号内从0开始标记,在字符串后依序排列变量名
var name = "Mark";
var date = DateTime.Now;
Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
方法2:开头添加$声明,括号内放变量名
Console.WriteLine($"Hello {aFriend}");
·字符串/字符串方法
剪切:Trim()
已于前文介绍
替换:Replace(a,b)
把【全部的】a替换为b
string sayHello = "Hello World!";
sayHello = sayHello.Replace("Hello", "Greetings");
Console.WriteLine(sayHello);
大小写:ToUpper()/ToLower()
Console.WriteLine(sayHello.ToUpper());
Console.WriteLine(sayHello.ToLower());
查找:Contains()/StartsWith()/EndsWith()
返回布尔值
string songLyrics = "You say goodbye, and I say hello";
Console.WriteLine(songLyrics.Contains("goodbye"));
Console.WriteLine(songLyrics.Contains("greetings"));
·数字类型
整型:int
双精度浮点数:double (精度高 范围大)
十进制:decimal (精度最高 范围稍小)
Math.PI 等内置常量都为double类型
·条件/循环语句
条件
if和else后跟执行语句用大括号{}包括起来
&&表示且 ||表示或
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
循环
while语句和do while语句
int counter = 0;
while (counter < 10)
{
counter++;
Console.WriteLine($"Hello World! The counter is {counter}");
}
for语句
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
(应用)制造一个二维数组
for (int row = 1; row < 10; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.Write($"({row}, {column}) ");
}
Console.WriteLine("");
}
·列表
列表表明必须指定元素类型
添加元素:Add()
删减元素:Remove()
查找元素:IndexOf()
找到返回【第一个】的索引,找不到返回-1
排序:Sort()
var names = new List<string> { "lyf", "Ana", "Felipe" };
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Console.WriteLine();
names.Add("Maria");
names.Add("Bill");
names.Remove("Ana");
foreach (var name in names)
{
Console.WriteLine($"Hello {name.ToUpper()}!");
}
Day2 2024.9.21 初识VS2022 我也有计算机编程环境啦!
根据b站@丑萌气质狗的课程进行学习~~~
·代码结构
namespace 命名空间
class 类型
Main 函数/方法
·暂停程序运行/输入
接受用户输入再继续执行:ReadKey()
接受用户输入:ReadLine()
·方法
构成:修饰符+(static)+void/string...+方法名+()+方法体{}
修饰符:权限控制
public/private/internal
方法使用范围(不写默认private)
方法内部使用:private
不限制使用范围:public
返回值:
不带参数不带返回值:void
带参数带返回值:string/double/int……(返回值是什么类型就定义什么类型)
静态/动态:添加static意味着不需要(无法)实例化。
被static标记的方法在程序开头就已经创建好了,故只能使用用static标记的变量
·泛型集合(相当于高级数组)
List<string> names = new List<string>();
添加元素:names.Add()
计数:names.Count
·程序调试
try-catch-finally方法
Day3,4 9.22,9.23 啥叫面向对象???
·面向对象:创建实例,使变量、行为有组织、强关联
创建类:class+类名称+{}
创建属性:修饰符+类型+属性名称
创建函数:不加static则必须经过实例化,加static则无法实例化
static适用于不需实例化的场景,比如输出信息……可以直接调用类下面的函数,比较简洁;
不加static适用于需要不同实例来区分不同实体的场景,比如各个人物属性。通过实例来调用函数。
class People
{
public int Age{get;set;}
public string Name { get; set; }
public void Eat() {
Console.WriteLine("我正在吃饭。");
}
public void Sleep()
{
Console.WriteLine("我正在睡觉。");
}
}
对象(实例):对象也叫实例,是类经过“实例化”得到的在内存中的实体
创建对象(实例化):类+对象名称+ = +new + 类+括号()
name entity = new name()
相当于创建一个类型为name的参数entity
为对象的属性赋值/调用:类.对象名称
调用函数:对象名称.函数名称+括号()
People FirstPerson = new People();
FirstPerson.Age = Console.ReadLine();
FirstPerson.Name = =Console.ReadLine)();
FirstPerson.Eat();
day4 2024.9.24 代码抽离
·代码抽离:感觉和参数传递差不多?
在不同的class之间快速传递参数
下例中,向类B里面传递类A的参数,类A的实例为FirstPerson
创建新的类:class+类名称B+大括号{}
在新的类中创建方法:public+void+方法名+括号(类A 形参名称)+大括号
{
调用类A中的参数:形参名称.方法名()
}