目的のオブジェクトの外に暗黙的および明示的な演算子を作成することはできません。あなたの代わりに何ができるか
がある:
あなたが好きそれを使用することができます上の
public static class StringEx
{
public static Guid ToGuid(this string str)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
}
以降:
string mestring = " ... ";
Guid guid = mestring.ToGuid();
はEDIT:
(もちろんそこにある別の方法があります)これは少し役に立たないですが、私はここに投稿します:
はstring
public class StringWrapper
{
string _string;
public StringWrapper(string str)
{
_string = str;
}
public static implicit StringWrapper operator(string str)
{
return new StringWrapper(str);
}
public static implicit string operator(StringWrapper strWrapper)
{
return strWrapper._string;
}
public static implicit Guid operator(StringWrapper strWrapper)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
public static implicit StringWrapper operator(Guid guid)
{
return guid.ToString();
}
}
をラップするクラスとを確認し、この役に立たないクラスみましょうあなたはこのような何かを:
string str = "..";
Guid guid = (StringWrapper)str;
そして何をしようとしたときの状況をそれ? –
あなたは試してみました....何が起こったのですか? –
既存の.net型の演算子をオーバーロードすることはできません。 'string'を' Guid'に変換する拡張メソッドを提供することができます。 –