Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4548956
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 21, 20262026-05-21T16:17:32+00:00 2026-05-21T16:17:32+00:00

WARNING: THIS CODE SUCKS, SEE ANTHONY’S COMMENTS Which is faster? 1. public bool IsValueType<T>(T

  • 0

WARNING: THIS CODE SUCKS, SEE ANTHONY’S COMMENTS

Which is faster?

1.

  public bool IsValueType<T>(T obj){
       return obj is ValueType;
  }

2.

  public bool IsValueType<T>(T obj){
       return obj == null ? false : obj.GetType().IsValueType;
  } 

3.

  public bool IsValueType<T>(T obj){
       return default(T) != null;
  }

4.Something else

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-21T16:17:33+00:00Added an answer on May 21, 2026 at 4:17 pm

    You aren’t really testing an object – you want to test the type. To call those, the caller must know the type, but… meh. Given a signature <T>(T obj) the only sane answer is:

    public bool IsValueType<T>() {
        return typeof(T).IsValueType;
    }
    

    or if we want to use an example object for type inference purposes:

    public bool IsValueType<T>(T obj) {
        return typeof(T).IsValueType;
    }
    

    this doesn’t need boxing (GetType() is boxing), and doesn’t have problems with Nullable<T>. A more interesting case is when you are passing object…

     public bool IsValueType(object obj);
    

    here, we already have massive problems with null, since that could be an empty Nullable<T> (a struct) or a class. But A reasonable attempt would be:

    public bool IsValueType(object obj) {
        return obj != null && obj.GetType().IsValueType;
    }
    

    but note that it is incorrect (and unfixable) for empty Nullable<T>s. Here it becomes pointless to worry about boxing as we are already boxed.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

It's a part of larger code base, which forces -Werror on gcc. This warning
In C# I use the #warning and #error directives, #warning This is dirty code...
Running FxCop on my code, I get this warning: Microsoft.Maintainability : 'FooBar.ctor is coupled
When I access my site from any computer, I see this warning popping up:
WARNING: This is an exploit. Do not execute this code. //shellcode.c char shellcode[] =
I keep getting 'warning: control reaches end of non-void function' with this code: -
Why does the C# compiler not even complain with a warning on this code?
Consider this code (using CString because it's familiar and easy to see when not
EDIT Public health warning - this question includes a false assumption about undefined behaviour.
When I run this bit of code through GCC I get this warning on

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.