c# - 字符串转换不起作用

标签 c# casting operator-overloading type-conversion

考虑这样一个类:

public class MyString
{
 private string _string;

 public string String
 {
  get { return _string; }
  set { _string = value; }
 }

 public MyString(string s)
 {
  _string = s;
 }

 public static implicit operator string(MyString str)
 {
  return str.String;
 }

 public static implicit operator MyString(string str)
 {
  return new MyString(str);
 }
}

如何使以下代码工作?

MyString a = "test";
object b = a;
var c = (string)b;

现在我得到这个异常:

InvalidCastException: Unable to cast object of type 'MyString' to type 'System.String'.

最佳答案

自定义隐式/显式运算符仅在键入的 值之间起作用 - 而不是对象。这样的转换总是基本的类型检查或拆箱。隐式转换为:

string s = a;

关于c# - 字符串转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11738519/

相关文章:

haskell - 有没有办法在ghc中重载并置?

c# - Thread.Yield 假设的解释

c# - 我不想在按钮边缘看到虚线

c# - 我如何在 XNA 游戏工作室中旋转 Texture2D?

c# - 将字母类型转换为 int 时,C# 会做什么?

java - int 到 Java 中的 unsigned char 数组

c# - 在 Async/Await 中调试异常(调用堆栈)

C - BitArray - 设置 uint64_t 的单个位

c++ - 如何为具有引用成员变量的类实现 operator=()?

c++ - 关于运算符+重载