C# 隐式和显式转换
这可能吗C# 隐式和显式转换,c#,C#,这可能吗 string wellFormattedGuidAsString = ...; Guid guid = wellFormattedGuidAsString; ... Method(wellFormattedGuidAsString ); void Method(Guid id) { ... } 我试着用显式和隐式的演员阵容 public static implicit operator Guid(string str) { Guid guid; Guid.Try
string wellFormattedGuidAsString = ...;
Guid guid = wellFormattedGuidAsString;
...
Method(wellFormattedGuidAsString );
void Method(Guid id) { ... }
我试着用显式和隐式的演员阵容
public static implicit operator Guid(string str)
{
Guid guid;
Guid.TryParse(str, out guid);
return guid;
}
不能在所需对象之外创建隐式和显式运算符 你可以做的是:
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();
编辑:
还有另一种方法(当然有)有点无用,但我会在这里发布:
创建一个将包装字符串的类
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;
只需重载您的方法:
void Method(Guid id) { ... }
void Method(string guid) {
Guid _guid;
Guid.TryParse(guid, out _guid);
Method(_guid);
}
当你尝试的时候发生了什么?你尝试了。。。。发生了什么?您不能为现有的.net类型重载运算符,您可以提供一个扩展方法,将string
转换为Guid
。显式/隐式关键字声明一个用户定义的类型转换运算符。我知道我可以为此创建扩展方法,但我确实希望这样做Guid=guidString。