使用C#从.NET类库中调用方法
相关概念
- 有状态方法和无状态方法:无状态方法类似JAVA中类的静态方法;有状态方法类似JAVA中的实例方法;
- 创建类的实例:对于有状态的方法,我们必须创建类的实例,才能调用有状态方法。
- 方法的返回值:方法完成后返回的值,无返回值则是void方法;
- 方法参数:调用方法时,传入该方法将用于完成其任务的值,这些值称为参数,通常“形参”指的是方法内使用的变量,“实参”是调用方法时传递的值.C# 中的参数按值传递给函数,因为结构是值类型,所以按值将结构传递给方法时,该方法接收结构参数的副本并在其上运行。类实例是引用类型,而非值类型。 按值将引用类型传递给方法时,方法接收对类实例的引用的副本。 这两个变量都引用同一对象。
代码示例:找到两个值中较大的一个
int firstValue = 500;
int secondValue = 600;
int largeValue =Math.Max(firstValue,secondValue);
Console.WriteLine($"largeValue :{largeValue}");
选择语句
if语句
整体与JAVA类似
Random random = new Random();
int dayUntilExpiration = random.Next(12);
int discountPercentage = 0;
if (dayUntilExpiration <= 0){
Console.WriteLine("Your subscription has expired.");
}else if(dayUntilExpiration == 1){
discountPercentage = 20;
Console.WriteLine("Your subscription expires within a day!");
Console.WriteLine($"Renew now and save {discountPercentage}%");
}else if(dayUntilExpiration <= 5){
discountPercentage = 10;
Console.WriteLine($"Your subscription expires in {dayUntilExpiration} days!");
Console.WriteLine($"Renew now and save {discountPercentage}%");
}else if(dayUntilExpiration <= 10){
Console.WriteLine($"Your subscription will expire soon.Renew now!");
}
switch语句
switch语句中的case可以有以下几种形式:
- 用于将表达式结果与常量值进行比较;
- 测试表达式结果是否等于常量。
default语句指定匹配表达式与其他任何case模式不匹配时要执行的语句。
可以为switch语句的一部分指定多个case模式:
DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range.
DisplayMeasurement(50); // Output: Measured value is 50.
DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range.
void DisplayMeasurement(int measurement)
{
switch (measurement)
{
case < 0:
case > 100:
Console.WriteLine($"Measured value is {measurement}; out of an acceptable range.");
break;
default:
Console.WriteLine($"Measured value is {measurement}.");
break;
}
}
case guard
case 模式可能表达功能不够,无法指定用于执行 switch 部分的条件。 在这种情况下,可以使用 case guard。 这是一个附加条件,必须与匹配模式同时满足。 case guard 必须是布尔表达式。 可以在模式后面的 when 关键字之后指定一个 case guard,如以下示例所示:
DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4.
DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5.
void DisplayMeasurements(int a, int b)
{
switch ((a, b))
{
case (> 0, > 0) when a == b:
Console.WriteLine($"Both measurements are valid and equal to {a}.");
break;
case (> 0, > 0):
Console.WriteLine($"First measurement is {a}, second measurement is {b}.");
break;
default:
Console.WriteLine("One or both measurements are not valid.");
break;
}
}
数组和循环语句
依然与JAVA类似
for语句
string[] orders = {"B123","C234","A345","C15","B177","G3003","C235","B179"};
foreach (string order in orders){
if(order[0] =='B'){
Console.WriteLine(order);
}
}
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
//第二种声明方式
string[] fraudulentOrderIDs = new string[3];
fraudulentOrderIDs[0] = "A123";
fraudulentOrderIDs[1] = "B456";
fraudulentOrderIDs[2] = "C789";
标识符名称 - 规则和约定 - C# | Microsoft Learn
while语句
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 0);