c# - 在 C# 程序中使用枚举内部属性来增加投票计数器
问题描述
这是我的要求,
我必须设计一个名为 Post 的类。此类为 StackOverflow 帖子建模。它应该具有标题、描述和创建日期/时间的属性。我们应该能够对帖子投赞成票或反对票。我们还应该能够看到当前的投票值。在 main 方法中,创建一个帖子,对其进行几次投票和投票,然后显示当前投票值。在本练习中,您将了解到 StackOverflow 帖子应提供向上投票和向下投票的方法。您不应赋予从外部设置 Vote 属性的能力,否则可能会意外更改类的投票为 0 或随机数。这就是我们在程序中创建错误的方式。该类应始终保护其状态并隐藏其实现细节。
到目前为止我是如何接近的,
public class Post
{
private int _vote;
private string _title;
private string _description;
private DateTime _cratedDate;
private Vote _voteType;
public Post(string title,string description,DateTime createdDate)
{
_vote = 0;
_title = title;
_description = description;
_cratedDate = createdDate;
}
public enum Vote
{
Upvote=1,
DownVote=-1
}
public Vote CurrentVote
{
set
{
// I want something like this..
//if _voteType is upVote then ++_vote else -- _vote
_voteType = value;
}
}
public int ShowCurrentVote()
{
return _vote;
}
}
和主要方法,
static void Main(string[] args)
{
Post post = new Post("POST1", "POST 1 DESCRIPTION !!!", DateTime.Now);
// 5 upvotes..
post.CurrentVote = Post.Vote.Upvote;
post.CurrentVote = Post.Vote.Upvote;
post.CurrentVote = Post.Vote.Upvote;
post.CurrentVote = Post.Vote.Upvote;
post.CurrentVote = Post.Vote.Upvote;
// 2 - downvotes
post.CurrentVote = Post.Vote.DownVote;
post.CurrentVote = Post.Vote.DownVote;
// current vote status..
Console.WriteLine(post.ShowCurrentVote());
}
现在我想以这种方式设计房产..
public Vote CurrentVote
{
set
{
// I want something like this..
//if _voteType is upVote then ++_vote else -- _vote
_voteType = value;
}
}
但是不知道如何实现
解决方案
例如,您可以定义一个设置投票的公共方法:
public void Vote(Vote vote)
{
switch (vote)
{
case Vote.DownVote:
_vote--;
break;
case Vote.Upvote:
_vote++;
break;
}
}
...以及一个返回当前计数的只读属性:
public int CurrentVote => _vote;
推荐阅读
- node.js - Node.js for 循环、事件循环、异步解析
- c# - 在下拉列表中选择的值未传递给控制器
- java - 如何在类级别注释中为 JavaDocs 启用 Java checkstyle?
- regex - 当只有一个组时,正则表达式中的组如何工作?
- sql-server - 如何使用 NULL 值分组
- c# - ASP.NET Core 2.x 谷歌身份验证获取 id_token
- php - Wordpress - 创建多语言插件
- angular - 一个接一个地过滤一个表 - Angular 2++
- angular - 使用 * ngFor 在 html 标签上放置一个属性
- javascript - 使用时间尺度为第一个和最后一个数据点创建填充