違いは何であるbool
とBoolean
C#でのタイプは?
違いは何であるbool
とBoolean
C#でのタイプは?
回答:
bool
のエイリアスとSystem.Boolean
同じようint
に、のエイリアスですSystem.Int32
。エイリアスの完全なリストについては、こちらをご覧ください:組み込み型テーブル(C#リファレンス)。
boolean
そしてBoolean
同じものではありません。1つはプリミティブデータ型で、もう1つはオブジェクトです。
違いはありません-boolは単にSystem.Booleanのエイリアスです。
http://msdn.microsoft.com/en-us/library/c8f5xwh7(VS.71).aspx
これは何年も後のことだと思いますが、同じページでgoogleからこのページに出くわしました。
現在、MSDNページには1つの小さな違いがあります。
VS2005
注意:
nullの値も持つことができるブール変数が必要な場合は、boolを使用します。詳細については、「null許容型(C#プログラミングガイド)」を参照してください。
VS2010
注意:
nullの値も持つことができるブール変数が必要な場合は、bool?を使用します。詳細については、「null許容型(C#プログラミングガイド)」を参照してください。
bool
nullを含めることができるが、含めるBoolean
ことができないことを暗示すると考えました。古いドキュメントから新しいドキュメントへのリンクがありますが、1つの?
違いに気付くほど十分に新しいドキュメントを読みませんでした。
彼らは同じです。ブール値は、C#とVB.Netの間の変換を単純化するのに役立ちます。ほとんどのC#プログラマーは「ブール」を好む傾向がありますが、VB.NetとC#の両方がたくさんある店にいる場合は、ブール値が両方の場所で機能するため、ブール値を好むかもしれません。
boolはBooleanクラスのエイリアスです。変数を宣言するときにエイリアスを使用し、クラスのメソッドを呼び出すときにクラス名を使用します。
それらは同じで、BoolはSystem.Booleanを短縮したものです。C#とVbの両方で機能するため、VB.netプログラマを使用している場合はブール値を使用します。
boolはプリミティブ型です。つまり、値(この場合はtrue / false)は変数に直接格納されます。ブール値はオブジェクトです。ブール型の変数は、ブールオブジェクトへの参照を格納します。唯一の本当の違いはストレージです。オブジェクトは常にプリミティブ型よりも多くのメモリを消費しますが、実際には、すべてのブール値をboolに変更しても、メモリ使用量に目立った影響はありません。
私は間違っていた; これが、ブール値とブール値を使用してJavaで機能する方法です。C#では、boolとBooleanはどちらも参照型です。どちらも変数に直接値を格納します。両方をnullにすることはできません。また、値を別の型(intなど)に格納するには「convertTO」メソッドが必要です。ブールクラス内で定義された静的関数を呼び出す必要がある場合にのみ、どれを使用するかが重要です。
bool
とBoolean
2つの異なるタイプではありません。1つのタイプは参照タイプではなく、どちらかの識別子を使用してその1つのタイプの静的メソッドを呼び出すことができ、実際にConvertTo
メソッドを呼び出して別のタイプに変換する必要はありません。
bool
およびBoolean
両方が参照型である」というのは正しくありません。単語bool
とBoolean
その両方が同じ型を参照しており、その型は参照型ではなく値型です。
boolはBooleanのエイリアスです。エイリアスが行うことは、コードがコンパイルされる直前に、テキストの文字列を別の文字列(notepad ++のsearch / replace-allなど)に置き換えることです。どちらを使用しても、実行時には効果がありません。
他のほとんどの言語では、1つはプリミティブ型であり、もう1つはオブジェクト型(C#専門用語の値型と参照型)です。C#では、この2つを選択することはできません。Booleanクラスで定義された静的メソッドを呼び出したい場合、それは自動的にBooleanを参照型として扱います。新しいブール変数を作成すると、自動的にそれが参照型として扱われます(Activator.CreateInstanceメソッドを使用する場合を除く)。
おそらくboolはBooleanよりも少し軽いです。興味深いことに、これを変更します。
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public bool CanUseOnItems { get; set; }
}
}
...これに:
namespace DuckbillServerWebAPI.Models
{
public class Expense
{
. . .
public Boolean CanUseOnItems { get; set; }
}
}
...私のcsファイルで「using System」が発生した タイプを「ブール」に戻すと、using句の髪が灰色に変わりました。
(Visual Studio 2010、WebAPIプロジェクト)
System.Boolean
だけではありませんBoolean
。using System;
それが許可されているため、最大示したBoolean
適切として解釈されるようにSystem.Boolean
。それほど冗長ではなく、それほど軽量ではありません。