使用enum inside属性增加C#程序中的投票计数器
这是我的要求, 我必须设计一个叫做Post的类。此类为StackOverflow post建模。它应该有属性 用于标题、说明和创建日期/时间。我们应该可以投赞成票或反对票 职位。我们还应该能够看到当前的投票值。在main方法中,创建一个post, 向上投票和向下投票几次,然后显示当前投票值。 在本练习中,您将了解StackOverflow post应该提供向上投票的方法 和向下投票。您不应授予从外部设置投票属性的功能, 因为否则,您可能会意外地将类的投票更改为0或随机 号码。这就是我们如何在程序中产生bug的原因。该类应始终保护其 声明并隐藏其实现细节 到目前为止我是如何接近的使用enum inside属性增加C#程序中的投票计数器,c#,C#,这是我的要求, 我必须设计一个叫做Post的类。此类为StackOverflow post建模。它应该有属性 用于标题、说明和创建日期/时间。我们应该可以投赞成票或反对票 职位。我们还应该能够看到当前的投票值。在main方法中,创建一个post, 向上投票和向下投票几次,然后显示当前投票值。 在本练习中,您将了解StackOverflow post应该提供向上投票的方法 和向下投票。您不应授予从外部设置投票属性的功能, 因为否则,您可能会意外地将类的投票更改为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;
例如,您可以定义一个设置投票的公共方法:
public void Vote(Vote vote)
{
switch (vote)
{
case Vote.DownVote:
_vote--;
break;
case Vote.Upvote:
_vote++;
break;
}
}
…和返回当前计数的只读属性:
public int CurrentVote => _vote;
以这种方式设置
CurrentVote
意味着您每次都会覆盖该值,而不是按您想要的方式递增该值。不要将Vote
枚举定义为Post
类的成员。调用方将被要求限定名称,这对他们来说是不必要的麻烦,而且这将阻止您调用方法Vote
,正如mm8的回答所示。实际上,在这个阶段,您应该避免定义嵌套类型period。以这种方式设置CurrentVote
意味着您每次都会覆盖该值,而不是按您想要的方式递增它。不要将Vote
枚举定义为Post
类的成员。调用方将被要求限定名称,这对他们来说是不必要的麻烦,而且这将阻止您调用方法Vote
,正如mm8的回答所示。实际上,在这个阶段,您应该避免定义嵌套类型period。