明示的および暗黙的な型変換キーワードの使用
これら二つのキーワード不慣れが、これは、文法テキストですが、印象は自分が悪いことを与えていません
明示的および暗黙の明示的な変換暗黙の変換は、C#でキーワードで、目的は、型を作ることです
別の型への変換は、最も一般的な例は、明示的な変換を使用するにはintにダブルから変換されたとき
そして、int型は暗黙の型変換を使用するときにdoubleに変換されます。
double d = default(double);
int i = default(int);
//double 转换为 int 时必须明确定义类型
//否则编译器会丢出错误
i = (int)d;
//int 转换为 double 时则可直接转换
d = i;
なぜ、このような違いがあるのでしょうか?
一般的に明確なを使用した場合、データの正しさの考慮は、ときにデータ型変換の歪みの問題が存在しますので、
変換、ユーザーが明示的に変換し、リスクを取るしたいタイプを指定することができるように。
使用する場合、注意することがポイント
1.は静的でなければなりません
2.暗黙的または明示的
オペレータ3.(これはまた、C#のキーワードであり、オペレータが過負荷クラスまたは構造体宣言に組み込みまたはユーザ定義の変換を提供してもよいです)
4.変換タイプを定義します。
入ってくるタイプの変換
クラス定義
public class A
{
private string _name;
//将建构子设为私有,代表无法用new关键字new出A类型
private A(string name)
{
_name = "Private Key" + name;
}
//隐含转换 接受string类型
public static implicit operator A(string expandedName)
{
return new A(expandedName);
}
//明确转换,接受一个StringBuilder类型
public static explicit operator A(StringBuilder expandedName)
{
return new A(expandedName.ToString());
}
public override string ToString()
{
return _name;
}
}
クライアントの使用
A a1 = "Hello a1";
Console.WriteLine(a1.ToString());
StringBuilder sb=new StringBuilder("Hello a2");
A a2 = (A)sb;
Console.WriteLine(a2.ToString());
構文はおよそこのようなものですが、このビューはまだそれを使用する際に知っていない、何も感じませんか?
そこで例えば、それをネットクラスの内部を与えます
XMLの操作は、多くの場合のXElementクラスが存在し、そのうちのXMLへのLINQを使用している場合
コンストラクタは5つのオーバーロードがあります。
私たちは、最初のパラメータは型のパラメータに渡された最初の大型2,4,5を参照することができたXName
XNameは、次のようなXML要素の名前です。
だから、新しいのXNameは、(「」)で渡すたびに少し余分と思われる場合には(そしてもちろんそれはXNamespaceと関連しますが、ここで説明されていません)
したがって、.NETは設計において、構造は、内部アクセスのサブサブセットをXNAME、および暗黙的暗黙的な変換を使用します
この方法では、次のように呼ばれているこのような方法で使用することができます
var e = new XElement("Books");
あなたがクラスを定義するときには、必要に応じて、次のようないくつかの追加機能を提供するために、これらのキーワードを使用することができます
ただし、使用はまた、合理的な設計かどうかを検討しなければなりません
変換を容易にするために、親クラスまたはインタフェースが使用するために抽出された相関は、束をしない場合、例えば、ときに、2つの種類があります
メンテナンスの困難につながるプログラムを書きます。
オリジナル:大列 キーワードの型変換明示的および暗黙的用法