通过实例使结构等于来自不同 class 和 return 的值的问题

Issue with making a struct equal to a value from different class and return that value by an instance

假设我在这个结构中有一个 MyStruct 类型的结构 'A' 和一个 int 类型的变量 'i'。我要表态

MyStruct A = i;

然后A将'i'的值存入其中。然后当我打电话给

print(a);

我希望它return本身的价值'i'。我想这样做的原因是因为我想通过不使用构造函数来保持我的代码尽可能干净。我如何在 C# 中执行此操作?

PS。对于第一个问题,我尝试将 operator = 定义如下

public static MyStruct operator =(MyStruct s,int i){

}

但是它有一个语法错误。任何建议都会有所帮助。

很简单:

public struct MyStruct
{
     private readonly int myValue;

     public MyStruct(int value) { myValue = value; }
     public override string ToString => myValue.ToString();
     public static implicit operator MyStruct(int i) => new MyStruct(i);
}

现在您可以:

MyStruct myStruct = 1; //will impicitly cast int to MyStruct
Console.WriteLine(myStruct); //will print 1

我已经省略了,因为它与手头的问题无关,实施 IEquatable<MyStruct> 并覆盖 GetHashCodeEquals 但你绝对应该这样做;您会发现大量问题询问如何正确执行此操作。

现在的问题是:为什么您需要对框架中的现有类型进行精简包装?你想做什么?

参考以下link,运算符=不能重载: Here

我假设您想要的是设置在结构 MyStruct 的名为 i 的字段中定义的值,您可以使用 . 运算符来完成。例如:

Int anIntValue = 1;
MyStruct A.i = anIntValue;

我怀疑那个 "print" 东西,你想要打印到输出(控制台或其他东西)。为此,请使用 System.Console.WriteLine(A.i) 或编写您自己的打印方法,例如:

public static void print(MyStruct B){
    System.Console.WriteLine(B.i)
} 

这样调用:

MyStruct.print(A);

请查阅 c# 属性。根据给定的信息,我假设它会澄清您对问题的理解。 希望对您有所帮助。