c# - 我传递了一个值,但它仍然返回 0
问题描述
我将一个值传递给一个类,然后从该类将它传递给另一个类并获取该值。
我试图解析值,但它仍然不起作用,我也尝试使用 getter 和 setter
public class Product
{
public string Title { get; set; }
public int Price { get; set; }
}
public class Book : Product
{
public string Isbn { get; set; }
public int Price2 { get; set; }
}
public class Check : Book
{
public int Num;
public int Num2;
public int Calculate(Book product) //This is important, I would like to keep practicing pass
{
Num = (product.Price);
Num2 = product.Price2;
Console.WriteLine(Num2);
return Num + Num2;
}
}
class Program
{
static void Main(string[] args)
{
var num = new Book();
var checkNum = num.Price = 10; //these is the values
var checkNum2 = num.Price2 = 20;
var result = new Check();
var checkNum3 = result.Calculate(new Book());
Console.WriteLine(checkNum3.Num);
}
}
我期待 30 作为结果
解决方案
让我们做你所拥有的工作
Calculate
需要得到定价的书。Calculate
返回数字,我们不需要使用.Num
.
var num = new Book();
var checkNum = num.Price = 10; //these is the values
var checkNum2 = num.Price2 = 20;
var result = new Check();
var checkNum3 = result.Calculate(num);
Console.WriteLine(checkNum3);
更好的名字
如果您使用更好的名称,则更容易理解。
var book = new Book();
book.Price = 10; //these is the values
book.Price2 = 20;
var check = new Check();
var calculated = result.Calculate(book);
Console.WriteLine(calculated);
让我们改进
A. (Best?)Check
是计算器
public class Check // Not a book
{
public static int Calculate(Book book)
{
var p = book.Price;
var p2 = book.Price2;
var total = p + p2;
Console.WriteLine(total);
return total;
}
}
(...)
var calculated = Check.Calculated(book); // no: new Check()
B. 如果Check
有Book
.
Check
不是a ,它可以拥有它。Book
public class Product
{
public string Title { get; set; }
public int Price { get; set; }
}
public class Book : Product
{
public string Isbn { get; set; }
public int Price2 { get; set; }
}
public class Check
{
private readonly Book book;
public Check(Book book)
{
this.book = book;
}
public int Calculate() => book.Price + book.Price2;
}
class Program
{
static void Main(string[] args)
{
var book = new Book();
book.Price = 10;
book.Price2 = 20;
var check = new Check(book);
Console.WriteLine(check .Calculate());
}
}
3 C. 如果Check
是Book
如果Check
是aBook
它需要存储Price
和Price2
。请考虑以下示例。
public class Product
{
public Product() { }
public Product(string title, int price)
{
Title = title;
Price = price;
}
public string Title { get; set; }
public int Price { get; set; }
}
public class Book : Product
{
public Book(Book book) : base(book.Title, book.Price)
{
Isbn = book.Isbn;
Price2 = book.Price2;
}
public Book() { }
public string Isbn { get; set; }
public int Price2 { get; set; }
}
public class Check : Book
{
public Check(Book book) : base(book)
{
// This should really call Book's contrcutor
}
public int Calculate() => Price + Price2;
}
class Program
{
static void Main(string[] args)
{
var b = new Book();
b.Price = 10;
b.Price2 = 20;
var c = new Check(b);
Console.WriteLine(c.Calculate());
}
}
推荐阅读
- mysql - 来自另一个案例表达式的案例表达式
- java - Html C:Foreach试图创建具有年龄数的表
- python - Matplotlib 鼠标光标坐标未显示空刻度标签
- list - 如何以更简单的方式合并列表中的元素?序言
- node.js - 构建可扩展的 SaaS 应用程序
- reactjs - 使用 socket.io 和 react hooks 时 Recact 状态没有被更新
- php - 尝试使用 PHP 创建新的 Postgres 数据库时出现“数据库不存在”
- swift - 斯威夫特:当一个引用类型常量被分配给一个变量,但该变量发生了变化时会发生什么?
- javascript - 基于给定属性的Vue渲染元素
- android - 即使授予了定位权限,Android 11 wifi SSID 在后台也是未知的