Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
416 views
in Technique[技术] by (71.8m points)

c# - Nullable class?

I have this class

public class FilterQuery
    {
        public FilterQuery() { }

        public string OrderBy { set; get; }
        public string OrderType { set; get; }        

        public int? Page { set; get; }
        public int ResultNumber { set; get; }

    }

I would like to use it like this

public IQueryable<Listing> FindAll(FilterQuery? filterQuery)

Is this possible?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

This immediately begs the question of why. Classes are by definition reference types and thus are already nullable. It makes no sense to wrap them in a nullable type.

In your case, you can simply define:

public IQueryable<Listing> FindAll(FilterQuery filterQuery)

and call FindAll(null) to pass no filter query.

If you're using C#/.NET 4.0, a nice option is:

public IQueryable<Listing> FindAll(FilterQuery filterQuery = null)

which means you don't even have to specify the null. An overload would do the same trick in previous versions.

Edit: Per request, the overload would simply look like:

public IQueryable<Listing> FindAll()
{
    return FindAll(null);
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...